タイムゾーンの変換を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
を持っていません。 (これにはまだTzdb
とSerialization
があります。)NodaTimeのソースを少し覗いてみましたが、置き換えの意味は分かりませんでした。
NodaTimeの.NETコアポートでBCLタイムゾーンルックアップを使用するにはどうすればよいですか?
私は全世界が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
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
@rianjs:うーん...私がターゲットとしていた以前のプロファイル(と1.xターゲット)には存在しませんでした。 .Net Core ...と別の見方をするだろう...しかし、私は "PCLでサポートされている"と言うが実際にはビルドしていないことをいくつか見つけた。バージョニングのためのドキュメントには、多くのことが望まれます。 –