c#计算2个国家/地区之间的时差,包括夏令时

Mic*_*hel 4 c#

我想知道两个国家之间的时差.有静态时间差,但在某些时期,夏令时介于两者之间.据我所知,某些国家的dst期间也不同,所以6月1日国家a和b之间的差异可以是1小时,7月1日可以是2小时,因为DST,1月8日可以再次1等等等

是否有框架功能或我必须自己计算?

米歇尔

Jon*_*eet 7

你得知道:

  • 两个时区(使用TimeZoneInfo.NET 3.5,记住一个国家可以有多个时区)
  • 即时,例如UTC DateTimeDateTimeOffset.

此时它相对容易:将UTC时刻转换为两个时区中的本地时间TimeZoneInfo.ConvertTime,并从另一个中减去一个.或者,使用TimeZoneInfo.GetUtcOffset它们,并从另一个中减去一个偏移量.

这是一个查找伦敦和山景之间当前差异的示例:

using System;

class Test
{
    static void Main()
    {
        var mountainView = TimeZoneInfo.FindSystemTimeZoneById
            ("Pacific Standard Time");
        var london = TimeZoneInfo.FindSystemTimeZoneById
            ("GMT Standard Time");
        DateTimeOffset now = DateTimeOffset.UtcNow;

        TimeSpan mountainViewOffset = mountainView.GetUtcOffset(now);
        TimeSpan londonOffset = london.GetUtcOffset(now);

        Console.WriteLine(londonOffset-mountainViewOffset); // 8 hours
    }
}
Run Code Online (Sandbox Code Playgroud)