2017-04-07 81 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。移動沒有看到這裏:) –

相關問題