Один вариант:
DateTime now = DateTime.Now;
DateTime today3am = now.Date.AddHours(3);
DateTime next3am = now <= today3am ? today3am : today3am.AddDays(1);
Другой:
DateTime now = DateTime.Now;
DateTime today = now.Date;
DateTime next3am = today.AddHours(3).AddDays(now.Hour >= 3 ? 1 : 0)
Множество способов снятия шкуры с этой конкретной кошки :) 1007 *
Все это, конечно, в местном времени, что означает, что вам не нужно беспокоиться о часовых поясах. Жизнь становится сложнее, если вы хотите задействовать часовые пояса ...
Обратите внимание, что это хорошая идея - взять DateTime.Now
один раз , чтобы избежать проблем, если дата перевернется во время вычисления ...