how to get current UTC offset of different timezones?
问题:
我需要在不同时区的特定时间在UTC上的服务器上执行任务。 比方说,我想在太平洋时间上午9点执行,而不管日期灯光的变化。
我有什么?
我通过这样做检查了时区的枚举
1 2 3 4 5 | var infos = TimeZoneInfo.GetSystemTimeZones(); foreach (var info in infos) { Console.WriteLine(info.Id); } |
例如,我只能在太平洋时间看到"太平洋标准时间",如果我这样做,
1 | TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time").GetUtcOffset(DateTime.UtcNow) |
我得到
我正在计划根据我上面的偏移量创建一个DateTime实例,这似乎不像我预期的那样工作。
另外,我不能使用像NodaTime这样的框架
知道如何让它工作吗?
您已经得到了答案,使用
I get -07:00:00 as output but as of now the offset is -08. That means it doesn't consider the daylight changes.
实际上,-7确实是当前的偏移量,因为太平洋时间目前正在使用夏令时。 在冬季,偏移量将恢复为-8,这是标准偏移量。 我想你只是让他们倒退了。
另外,请记住
你可能正在寻找这样的东西:
1 2 | var chinaTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("China Standard Time")); var pacificTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time")); |
传递给
更新:清理代码