有一节“使用NodaZoneData文件”,介绍如何从NodaZoneData文件中包含和加载tz数据。
代码部分显示以下内容
IDateTimeZoneProvider provider;
// Or use Assembly.GetManifestResourceStream for an embedded file
using (var stream = File.OpenRead("tzdb-2013h.nzd"))
{
var source = TzdbDateTimeZoneSource.FromStream(stream);
provider = new DateTimeZoneCache(source);
}
Console.WriteLine(provider.SourceVersionId);
如何将创建的提供程序设置为NodaTime库以将其用作默认值? NodaTime发布不遵循tz数据发布。这将在未来改变吗? 有没有另一种方法来获取更新的NodaTime lib,并将tzdb数据更新为nuget?
由于
答案 0 :(得分:4)
如何将创建的提供程序设置为NodaTime库以将其用作默认值?
Noda Time中很少有东西使用任何提供程序作为默认设置。 (类似地,默认情况下我们不使用系统时区,并尝试避免隐式使用当前文化,而不是兼容性。)查看当前的2.0源代码,仅引用是ClockExtensions
和DateTimeZoneProviders.Serialization
(由XML和二进制序列化使用,可以在应用程序代码中设置)。
如果你想拥有自己的应用程序范围默认值,我建议你创建一个自己的类,其中包含一个暴露IDateTimeZoneProvider
或者单例的静态属性。除非您引用DateTimeZoneProviders.Tzdb
,否则请参阅。
在保持最新状态方面:
nzd
文件。您可以通过获取包含最新文件的URL的http://nodatime.org/tzdb/latest.txt来检测到这一点。没有一个选项很容易实现,还有很多其他的Noda Time工作要做(使用docfx重新实现网站,使用BenchmarkDotNet安排基准测试并在网站上公开这些数据,当然还有2.0完成代码库)。我们会接受它,但不要因为它很快就会屏住呼吸。