[英]How to obtain the current time differences between two timezones
我想计算美国/中部时区和英国夏令时之间的当前时差。 我的意思是,目前这两个时区都有夏令时,所以他们有6小时的时差。 但是在2010年10月31日星期日之后,英国夏季的夏令时将会被取消,届时这两个时区之间将有5小时的时差。
有什么方法可以计算出这些不同的时差吗?
只是为给出的答案提供一些具体的代码,这里有一些代码来解决我(在伦敦)和我在山景城的同事之间的当前差异:
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);
}
}
您可以从不同的时区创建两个日期时间对象,这是一个很好的示例: 在c#fx 3.5中的特定时区中创建日期时间
并计算它们之间的差值。
如果您将自己限制在当前日期,我会得到正确的答案。 一般来说,取决于你想要的正确程度,这可能会非常困难。 这是因为截至今天的时区中的夏令时可能与历史上的不同。 也许在01/04/1950之前没有英国夏令时。 或者在悉尼奥运会期间,DST日期在2000年暂时更改。要考虑所有这些因素,您需要一个历史DST / TimeZone数据库。
TimeZoneInfo.GetUtcOffset的文档有一个示例,显示了不同时间的各个时区的UTC偏移计算。 您只需要在两个时区的每个感兴趣的特定时间获取UTC偏移量并计算差异。 看到:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.