2016-07-04 7 views
3

タイムゾーンの変換をical.netで行うのは、VTIMEZONE要素を使用して時間の変更やタイムゾーンの変換を処理しようとした以前の実装よりも優れているためです。NodaTimeの.NETコア実装のBCL DateTimeZoneProviderはどこですか?

この方法は、パフォーマンスにとって非常に重要です。テストスイートランタイムを約6秒から約2.5秒に落とします。

public static DateTimeZone GetZone(string tzId) 
{ 
    // IANA lookup attempt 

    zone = DateTimeZoneProviders.Bcl.GetZoneOrNull(tzId); 
    if (zone != null) 
    { 
     return zone; 
    } 

    // Serialization lookup attempt 
    // Some other tricks to find a reasonable time zone, etc. 
} 

NodaTimeの.NETのコアの実装はDateTimeZoneProviderとしてBclを持っていません。 (これにはまだTzdbSerializationがあります。)NodaTimeのソースを少し覗いてみましたが、置き換えの意味は分かりませんでした。

NodaTimeの.NETコアポートでBCLタイムゾーンルックアップを使用するにはどうすればよいですか?

答えて

2

NodaTimeの.NETコアポートでBCLタイムゾーンルックアップを使用するにはどうすればよいですか?

は残念ながら、そこに良いTimeZoneInfoサポートは、野田時間1.1がサポートするPCLプロファイルではありません - でもFindSystemTimeZoneById()Idプロパティが用意されていません。コメントに記載されているように、.NETコア自体に存在する可能性があるという兆候があります。

TzdbDateTimeZoneSource.WindowsMappingを使用すると、最も近い同等のIANA/TZDBタイムゾーンを取得できます。ただし、コード全体でIANA/TZDBタイムゾーンIDを使用できると理想的です。あなたは、Linuxを使っているのであれば(これらは、あまりにも、他のプラットフォーム用のよりポータブルになります。)

FindSystemTimeZoneByIdは、.NETのコアでサポートされている場合でも、それはのWindowsタイムゾーンを提供することはありません - それはzoneinfoファイルを使用しています。したがって、Windowsのタイムゾーンの移植性が必要な場合は、WindowsMappingが本当に最適なオプションだと思います。

更新:それは調整ルールを公開しないようもう一度見た、我々は間違いなくは、.NETのコアでサポートTimeZoneInfoすることはできません:(

+0

私は全世界がIANAタイムゾーンを使用することを義務付けることができれば悲しいかな、ical.netは、Googleカレンダー、Outlook、Apple Mailなどのアプリケーションから生成されたicalendar(ic)ファイルを作成して使用するためのライブラリですので、サポートしているものでかなり許容しなければなりません。 ://github.com/rianjs/ical.net/blob/master/ical.NET.UnitTests/Calendars/Serialization/TimeZone3.ics#L5 – rianjs

+0

FindSystemTimeZoneByIdが存在する:https://docs.microsoft.com/en-us/ dotnet/core/api/system.timezoneinfo#System_TimeZoneInfo_FindSystemTimeZoneById_System_String_と同様に、 dプロパティ:https://docs.microsoft.com/en-us/dotnet/core/api/system.timezoneinfo#System_TimeZoneInfo_Id - 他の方法ではサポートされていませんか? – rianjs

+0

@rianjs:うーん...私がターゲットとしていた以前のプロファイル(と1.xターゲット)には存在しませんでした。 .Net Core ...と別の見方をするだろう...しかし、私は "PCLでサポートされている"と言うが実際にはビルドしていないことをいくつか見つけた。バージョニングのためのドキュメントには、多くのことが望まれます。 –

関連する問題