如何为NodaTime .NET更新NodaTime.xml?

时间:2014-07-23 07:24:49

标签: c# .net nodatime

我是NodaTime的新手,并用它做样品。 NodaTime很棒,在阅读NodaTime实现的文档时,我注意到有一个文件(包含时区数据)和NodaTime.dll库一起下载。

我使用" Nuget Packages" 将 NodaTime库添加到我的项目中,在我的项目中安装NodaTime包时,我看到了 NodaTime.dll和NodaTime。 bin文件夹中的xml

有关我项目中安装的NodaTime库的信息:

   NodaTime.dll version 1.3.0
   NodaTime.xml (came along with the NodaTime.dll)
  

问题:

  1. 我是否需要手动更新NodaTime.xml?

  2. 在此链接(Update tz database)中,我阅读了一些有关更新tz数据库的信息,但这对我来说似乎有些困惑。如何下载和更新NodaTime.xml文件?

  3. 提供更新NodaTime.xml文件和一些相关路径的简短说明?

  4. 是否有任何链接可以帮助我了解NodaTime中的更新?

  5. 还提供有关问题和解决方案的宝贵建议,以及使用它的一些有价值的提示。

    NodaTime在我的项目中的主要作用是查找给定时区是否具有DST,并根据夏令时转换日期时间。

1 个答案:

答案 0 :(得分:3)

您对XML文档文件和时区(nzd)文件感到困惑。您根本不需要更新的XML文件。

要获取最新版本的TZDB数据,您应该:

  • 获取(并存储)http://nodatime.org/tzdb/latest.txt的内容。那只是一个网址。
  • 如果 与您上次提取的值相同,则应获取该网址的内容,例如: http://nodatime.org/tzdb/tzdb2014e.nzd
  • 打开下载文件的流(取决于您的平台,但FileStream之类的内容)并使用TzdbDateTimeZoneSource.FromStream从中加载TzdbDateTimeZoneSource
  • TzdbDateTimeZoneSource换入DateTimeZoneCache(仅使用构造函数)以获取IDateTimeZoneProvider,这是您应在主应用程序代码中使用的内容

如果您的应用程序定期重新启动,您可以在启动时执行此操作 - 如果它类似于需要持续运行的Web服务器,则会稍微困难一点,因为您需要一种方法来告诉您的应用程序使用新的IDateTimeZoneProvider

这基本上就是文档所说的,当然 - 你说你发现它令人困惑,但不是以什么方式......如果这个答案仍然不清楚,请详细说明,我会看到我能做什么做。