我需要获取一个指定接下来的凌晨2点的日期对象。如何找到.net的下一个凌晨2:00的确切日期.net
所以假装时间是15日14:00,我需要日期对象包含16日2点 如果时间是16日1点,我需要日期对象包含2: 00 16日
我该怎么做?
我需要获取一个指定接下来的凌晨2点的日期对象。如何找到.net的下一个凌晨2:00的确切日期.net
所以假装时间是15日14:00,我需要日期对象包含16日2点 如果时间是16日1点,我需要日期对象包含2: 00 16日
我该怎么做?
在C#
DateTime dt = DateTime.Today.AddHours(2);
if (dt < DateTime.Now)
dt = dt.AddDays(1);
我敢肯定有一个整洁的/聪明的方式,但会完成这项工作。
如果当前时间在凌晨2:00之前,则下一个凌晨2:00将是今天凌晨2:00,明天(第1天)将会发生。
您可能想要使用日期时间对象并逐日递增,这应确保您始终处于正确的日期。
你如何在.net中使用日期对象。 – 2011-01-14 13:56:30
DateTime.AddDays – 2011-01-14 13:57:47
private DateTime GetTwoAm()
{
DateTime time1 = DateTime.Now;
DateTime time2 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 2, 0, 0);
if (time1 <= time2)
{
return time2;
}
else
{
return time2.AddDays(1);
}
}
DateTime dt = DateTime.Now;
if (dt.Hour >= 2)
dt = dt.Date.Add(new TimeSpan(1, 2, 0, 0));
else
dt = dt.Date.Add(new TimeSpan(2, 0, 0));
每当使用日期处理使用内置的功能,因为你会错过的情况下。 1天
DateTime today2am = DateTime.Now.Date.AddHours(2);
DateTime Nexttwoam = (DateTime.Now < today2am) ? (today2am) : today2am.AddDays(1);
添加到今天,如果是02:00以后,否则加0天数:
DateTime.Today.AddDays(DateTime.Now.Hour >= 2 ? 1 : 0)
我认为,包括添加小时至午夜或添加任何时间跨度超过一小时大任何回答由于夏令时,可能在某个时候注定要失败。
Dim dtToCheck As DateTime = "3/13/2011 00:12"
Dim tz As TimeZone = System.TimeZone.CurrentTimeZone
Dim dl As System.Globalization.DaylightTime = tz.GetDaylightChanges(dtToCheck.Year)
Dim dt As DateTime = Format(dtToCheck, "yyyy-MM-dd HH:00:00.000")
If dt < dtToCheck Then dt = dt.AddHours(1)
Do Until dt.Hour = 2
If dt < dl.Start And dt.AddHours(1) >= dl.Start Then
'will go over
dt = dt.Add(dl.Delta)
End If
dt = dt.AddHours(1)
Loop
TextBox2.Text = dt
对于2011年3月13日午夜,下一个2:AM是3月14日,至少在我的时区。
谢谢downvoter。 – fearofawhackplanet 2011-01-14 14:05:18