我想知道两个国家的时差。当然存在静态时差,但在某些时间段,夏令时介于两者之间。据我所知,一些国家的DST时间也不同,所以6月1日a国和b国之间的差异可以是1小时,7月1日根据dst可以是2小时,8月1日可以是1,以此类推。
它有一个框架函数吗?还是我必须自己计算它?
米歇尔
发布于 2009-09-08 07:14:40
您需要知道:
TimeZoneInfo,请记住,一个国家/地区可以有多个时区)在时间上为一个瞬间,例如UTC DateTime或.NET 在这一点上,这是相对简单的:使用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
}
}发布于 2009-09-08 07:34:00
找出任何历史差异(即对于过去一个时区或两个时区的本地DST策略不同的日期),您必须存储每个时区的DST开始/结束/偏移的过去策略,并自己解决它们。
如果您可以根据加载到Windows中的当前规则集来了解它们之间的区别,那么内置的.NET方法就简单明了。
https://stackoverflow.com/questions/1392432
复制相似问题