2016-09-01 4 views
0

NodaZoneDataファイルからtzデータを組み込みロードする方法については、「NodaZoneDataファイルの使用」のセクションがあります。NodaTimeアップデートマニュアルtz db

コードセクションでは、デフォルトとしてそれを使用するためにはNodaTimeライブラリに作成したプロバイダを設定するにはどうすればよい以下

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リリースはtzデータリリースに従いません。これは将来変更される予定ですか? tugdbデータをナゲットとして更新して、更新されたNodaTimeライブラリを入手する別の方法はありますか?あなたがデフォルトとしてそれを使用するためにはNodaTimeライブラリに作成したプロバイダを設定するにはどうすればよい

おかげ

答えて

4

ノーダタイムでは、のどのようなものも、デフォルトではプロバイダーが使用されています。 (同様に、デフォルトでシステムタイムゾーンを使用せず、互換性のために現在のカルチャを暗黙的に使用しないようにしてください)の参照はClockExtensionsDateTimeZoneProviders.SerializationですXMLとバイナリの直列化によって使用され、アプリケーションコードで設定できます)。

独自のアプリケーション全体のデフォルトを設定したい場合は、IDateTimeZoneProvider、またはシングルトンのいずれかを公開する静的プロパティで独自のクラスを作成することをおすすめします。それ以外の場合はDateTimeZoneProviders.Tzdbを参照してください。最新のものに保つという点で

  • 新しいnzdファイルはそれぞれの新しいリリース後すぐに野田時間のウェブサイトに掲載されています。最新のファイルへのURLを含むhttp://nodatime.org/tzdb/latest.txtを取得することでそれを検出できます。
  • あり、我々はnugetパッケージを解放する方法を中心に検討しているオプションは次のとおりです。
    • は(おそらくと「ブートストラップ」のコードの小さな量)だけデータを含むnugetパッケージを持っているが、とNodaTimeから埋め込まれたデータを削除します.dll
    • すべてのTZDB固有のコードを含むNugetパッケージを用意し、NodaTime.dllから埋め込みデータを削除する
    • 新しいNodaTime Nugetパッケージを新しいファイル

どれも簡単に実装することはできません。他にもたくさんのNoda Timeの作業があります(docfxでWebサイトを再実装し、BenchmarkDotNetを使用してベンチマークをスケジューリングし、そのデータをWebサイトに公開します。 2.0コードベース)。私たちはそれに着きますが、それは本当にすぐになるためにあなたの息を止めないでください。

+0

非常に詳細な回答をいただきありがとうございます。 – Mantzas

関連する問題