如何在NodaTime处理澳大利亚/墨尔本和澳大利亚/维多利亚?

时间:2017-04-07 12:40:14

标签: internationalization dst nodatime

我已经开始使用NodaTime并注意到一个小问题。

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

澳大利亚/墨尔本的时间转移+11和非dst时移+10。 在NodaTime中,看起来像澳大利亚/墨尔本是+ 10 / + 10。

在维基上,澳大利亚/墨尔本与澳大利亚/维多利亚相似 但在NodaTime澳大利亚/维多利亚是+ 11 / + 11

在哪里寻找真相的来源?维基过时还是NodaTime数据库不同步?或许还有其他一些引人入胜的问题。

1 个答案:

答案 0 :(得分:4)

  

在哪里寻找真相的来源?

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

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

现在,我没有看到你的结果,这表明你没有正确使用Noda Time。这是一个例子:

class User {
// blablabla
@OneToMany(/*properties*/
Set<Like> likes;

输出:

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}");
        }
    }
}

如您所见,标准时间 +10,日光时间为+11。