检查 DatetimeOffset 是否在晚上 10 点(今天)和凌晨 2 点(第二天)之间

问题描述 投票:0回答:1

下面是我必须检查 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)
    {
    }
c# datetime timezone-offset datetimeoffset datetime-comparison
1个回答
0
投票

您可以简单地比较当前CSTDate的

Hour
,因为时区之间的时差不可能早或晚12小时。

此外,您还可以使用

TimeZoneInfo.ConvertTime
获取当前 CST 时间。

var currentCSTTime = TimeZoneInfo.ConvertTime(DateTime.Now,
        TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"));

if(currentCSTTime.Hour > 22 || currentCSTTime.Hour < 2)
{
    //do stuff
}
© www.soinside.com 2019 - 2024. All rights reserved.