That's handy Ditch! but it misses jobs scheduled for today, but after current time. I made that change (and reformatted to my own style as I have stored it in my "snippets" folder - sorry about that!
[next_run_time] = RIGHT('000000' + LTRIM(RTRIM(STR(S.next_run_time, 6))), 6)
FROM msdb.dbo.sysjobs AS J
join msdb.dbo.sysjobschedules AS S
on J.job_id = S.job_id
WHERE J.enabled = 1
S.next_run_date > CONVERT(int, CONVERT(VARCHAR(8), GETDATE(), 112))
S.next_run_date = CONVERT(int, CONVERT(VARCHAR(8), GETDATE(), 112))
AND S.next_run_time > CONVERT(int, REPLACE(CONVERT(VARCHAR(8), GETDATE(), 108), ':', ''))
DB_King: Have a look at sysjobschedules in BoL for details of the "freq_XXXX" columns that will probably give you what you want with some small modifications to Ditch's query. We stop all jobs running before we reboot the SQL box to prevent things being half-way-though. Sometimes patches etc. restart SQL and then want another cycle, so its a pain if something has then started.