我想知道两个国家之间的时差。 有静态时间差,但在某些时期,夏令时介于两者之间。 据我所知,某些国家的dst期间也不同,所以6月1日国家a和b之间的差异可以是1小时,7月1日可以是2小时,因为DST,1月8日可以再次1等等
是否有框架功能或我是否必须自己计算?
米歇尔
答案 0 :(得分:7)
你需要知道:
TimeZoneInfo
,记住一个国家/地区可以有多个时区)DateTime
或DateTimeOffset
。此时相对容易:使用TimeZoneInfo.ConvertTime
将UTC时刻转换为两个时区的本地时间,并从另一个中减去一个。或者,对它们使用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
}
}
答案 1 :(得分:0)
要查找任何历史差异(例如,对于一个或两个时区的本地DST政策不同,过去的日期),您必须存储每个时区的DST开始/结束/偏移的过去策略并进行处理出去自己
如果您根据加载到Windows中的当前规则集了解差异,那么内置的.NET方法非常简单直接。