我确信这很容易,但我有一个突然的精神障碍.
我正在尝试为下一次出现的凌晨3点获取一个DateTime对象.例如,如果DateTime.Now是16/july/2009 : 12:04pm- 下一次出现凌晨3点17/july/2009 : 03:00
但是,如果DateTime.Now是,17/july/2009 : 01:00那么下一次出现17/july/2009 : 03:00的时间仍然是(不是后一天).
那有意义吗?
Jon*_*eet 29
一种选择:
DateTime now = DateTime.Now;
DateTime today3am = now.Date.AddHours(3);
DateTime next3am = now <= today3am ? today3am : today3am.AddDays(1);
Run Code Online (Sandbox Code Playgroud)
另一个:
DateTime now = DateTime.Now;
DateTime today = now.Date;
DateTime next3am = today.AddHours(3).AddDays(now.Hour >= 3 ? 1 : 0)
Run Code Online (Sandbox Code Playgroud)
很多皮肤特殊猫的方式:)
这当然是在当地时间,这意味着您不必担心时区.如果你想要涉及时区,生活变得更加棘手......
请注意,如果在计算时日期翻过来,最好采取DateTime.Now 一次避免问题...
DateTime now = DateTime.Now;
DateTime threeAM = now.Date.AddHours(3);
if (threeAM < now)
threeAM = threeAM.AddDays(1);
Run Code Online (Sandbox Code Playgroud)