有一节“使用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库,并将其数据更新为nuget?
谢谢
发布于 2016-09-02 06:23:50
如何将创建的提供程序设置为NodaTime库,以便将其用作默认值?
Noda Time中很少使用任何提供者作为默认值。(类似地,默认情况下我们不使用系统时区,并且试图避免隐式地使用当前区域性,而不是为了兼容性。)查看当前的2.0源代码,唯一的引用是ClockExtensions和DateTimeZoneProviders.Serialization (这是由XML和二进制序列化使用的,可以在应用程序代码中设置)。
如果您想拥有自己的应用程序范围内的默认设置,我建议您使用一个静态属性创建您自己的类,该属性公开一个IDateTimeZoneProvider,或者可能是一个单例。如果不是这样的话,请参考DateTimeZoneProviders.Tzdb。
在保持最新情况方面:
nzd文件。您可以通过获取包含到最新文件的URL的http://nodatime.org/tzdb/latest.txt来检测这一点。
实现这些选项都不简单,还有许多其他Noda时间工作要做(用docfx重新实现网站、使用BenchmarkDotNet调度基准并在网站上公开这些数据,当然还要完成2.0代码库)。我们会到的,但不要屏住呼吸,因为它现在是真实的。
https://stackoverflow.com/questions/39269860
复制相似问题