2017-04-07 89 views
1

我已经开始使用NodaTime,并注意到一个小问题。澳大利亚/墨尔本和澳大利亚/维多利亚州在NodaTime中是如何处理的?

基于wiki页面https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

澳大利亚/墨尔本应该有夏令时移+11和非夏令时移+10上。 在NodaTime,它看起来像Austrralia /墨尔本是+ 10/+ 10。

维基澳大利亚/墨尔本类似于澳大利亚/维多利亚 但NodaTime澳大利亚/维多利亚为+ 11/+ 11

哪里可以找到真理的来源? wiki过时或NodaTime DB不同步?或者也许还有其他一些令人着迷的问题发生。

+1

仅供参考 - 我使用我编写的使用Noda Time获取tzdb数据的应用程序维护Wikipedia页面。 –

+0

伟大的信息@MattJohnson这是有帮助的:) –

回答

3

在哪里寻找真相的来源?

IANA time zone database是我知道的最好的来源,这就是Noda Time使用的。

如果您想查看随时间变化的结果,tzvalidate页面有一个文件列表,每个IANA发布一个。每个文件显示1900到2035年之间每个时区的每个转换。

现在,我没有看到您的结果,这表明您没有正确使用Noda时间。这里有一个例子:

using NodaTime; 
using System; 

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var zone = DateTimeZoneProviders.Tzdb["Australia/Melbourne"]; 

     var start = Instant.FromUtc(2015, 1, 1, 0, 0); 
     var end = Instant.FromUtc(2020, 1, 1, 0, 0); 
     foreach (var interval in zone.GetZoneIntervals(start, end)) 
     { 
      Console.WriteLine($"{interval.Start} - {interval.End}: {interval.WallOffset} {interval.Name}"); 
     } 
    } 
} 

输出:

2014-10-04T16:00:00Z - 2015-04-04T16:00:00Z: +11 AEDT 
2015-04-04T16:00:00Z - 2015-10-03T16:00:00Z: +10 AEST 
2015-10-03T16:00:00Z - 2016-04-02T16:00:00Z: +11 AEDT 
2016-04-02T16:00:00Z - 2016-10-01T16:00:00Z: +10 AEST 
2016-10-01T16:00:00Z - 2017-04-01T16:00:00Z: +11 AEDT 
2017-04-01T16:00:00Z - 2017-09-30T16:00:00Z: +10 AEST 
2017-09-30T16:00:00Z - 2018-03-31T16:00:00Z: +11 AEDT 
2018-03-31T16:00:00Z - 2018-10-06T16:00:00Z: +10 AEST 
2018-10-06T16:00:00Z - 2019-04-06T16:00:00Z: +11 AEDT 
2019-04-06T16:00:00Z - 2019-10-05T16:00:00Z: +10 AEST 
2019-10-05T16:00:00Z - 2020-04-04T16:00:00Z: +11 AEDT 

正如你所看到的,它 +10标准时间和+11日光时间。

+0

谢谢@jonSkeet问题更加微不足道,我用作输入的日期是DST澳大利亚/墨尔本时,虽然它是非DST。移动没有看到这里:) –