下面是我必须检查 currentDateInCST 是否在中央标准时间晚上 10 点到凌晨 2 点(第二天)之间的代码。如何使 startDate 和 endDate 成为中部标准时间?
public DateTimeOffset GetTimeByTimeZone(DateTimeOffset? date, string windowsTimeZone)
{
var timeZone = PlatformTimeZoneMapper.GetTimeZoneIdForPlatform(windowsTimeZone);
var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZone);
return effectiveDate.Value.ToOffset(timeZoneInfo.GetUtcOffset(date.Value));
}
var currentDateInCST = GetTimeByTimeZone(DateTimeOffset.Now, "Central Standard Time");
var startDate = new DateTimeOffset(currentDateInCST.Year, currentDateInCST.Month, currentDateInCST.Day, 22, 0, 0, new TimeSpan(0, 0, 0));
var tomorrowsDate = currentDateInCST.DateTime.AddDays(1);
var endDate = new DateTimeOffset(tomorrowsDate.Year, tomorrowsDate.Month, tomorrowsDate.Day, 2, 0, 0, new TimeSpan(0, 0, 0));
if (currentDateInCST >= startDate && currentDateInCST <= endDate)
{
}
您可以简单地比较当前CSTDate 的小时。 (由于时区之间的时差不能早或晚超过12小时,所以不必考虑时间是在前天还是后天的晚上10点到凌晨2点之间。)
var currentCSTTime = TimeZoneInfo.ConvertTime(DateTime.Now,
TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));
if(currentCSTTime.Hour > 22 || currentCSTTime.Hour < 2)
{
Console.WriteLine("Match");
}