我想计算美国/中部时区和英国夏令时之间的当前时差。我的意思是,目前这两个时区都有夏令时,所以它们有6小时的时差。但在2010年10月31日星期日之后,英国夏令时将取消,届时这两个时区之间将有5小时的时差。
有没有什么方法可以计算出这些变化的时间差?
发布于 2010-10-07 13:07:35
您可以从不同的时区创建两个datetime对象,一个很好的例子是:Creating a DateTime in a specific Time Zone in c# fx 3.5
并计算它们之间的差值。
发布于 2010-10-07 14:22:15
为了给出答案提供一些具体的代码,这里有一些代码来解决我(在伦敦)和我在Mountain View的同事之间的当前差异:
using System;
class Test
{
static void Main()
{
var london = TimeZoneInfo.FindSystemTimeZoneById
("GMT Standard Time");
var googleplex = TimeZoneInfo.FindSystemTimeZoneById
("Pacific Standard Time");
var now = DateTimeOffset.UtcNow;
TimeSpan londonOffset = london.GetUtcOffset(now);
TimeSpan googleplexOffset = googleplex.GetUtcOffset(now);
TimeSpan difference = londonOffset - googleplexOffset;
Console.WriteLine(difference);
}
}发布于 2010-10-07 13:23:51
我有正确的答案,如果你把自己限制在当前日期,这将是最有效的。一般来说,根据你想要的正确程度,这可能是相当困难的。这是因为今天时区的DST可能不同于历史上的DST。也许在1950年4月1日之前没有英国夏令时。或者在悉尼奥运会期间,美国夏令时的日期在2000年被临时更改。要考虑所有这些因素,您将需要一个历史DST/时区数据库。
https://stackoverflow.com/questions/3878815
复制相似问题