我想计算美国/中部时区与英国夏令时之间的当前时差。我的意思是,目前这两个时区都有夏令时,所以他们有6小时的时差。但是在2010年10月31日星期日之后,英国夏季的夏令时将会被取消,届时这两个时区之间将有5小时的时差。
有什么方法可以计算出这些不同的时差吗?
答案 0 :(得分:21)
只是为给出的答案提供一些具体的代码,这里有一些代码来解决我(在伦敦)和我在山景城的同事之间的当前差异:
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);
}
}
答案 1 :(得分:4)
您可以从不同的时区创建两个日期时间对象,这是一个很好的例子:Creating a DateTime in a specific Time Zone in c# fx 3.5
计算它们之间的差值。
答案 2 :(得分:2)
如果您将自己限制在当前日期,我会得到正确答案。 一般来说,取决于你想要的正确程度,这可能会非常困难。这是因为截至今天的时区中的夏令时可能与历史上的不同。也许在01/04/1950之前没有英国夏令时。或者在悉尼奥运会期间,DST日期在2000年暂时更改。要考虑所有这些因素,您需要一个历史DST / TimeZone数据库。
答案 3 :(得分:2)
TimeZoneInfo.GetUtcOffset的文档中有一个示例,显示了在不同时间计算不同时区的UTC偏移量。您只需要在两个时区的每个感兴趣的特定时间获取UTC偏移量并计算差异。参见: