Я использую NodaTime для преобразования часовых поясов в ical.net, потому что он работает намного лучше, чем предыдущая реализация, которая пыталась использовать элемент VTIMEZONE
для обработки изменений времени и преобразования часовых поясов.Где находится BCL DateTimeZoneProvider в реализации .NET Core для NodaTime?
Под капотом этот метод очень важен для производительности: он сокращает время выполнения тестового набора от около 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.
}
Реализация ядра .NET из NodaTime не Bcl
как DateTimeZoneProvider
. (У него все еще есть Tzdb
и Serialization
.) Я немного толкнул в источнике NodaTime, но я не был уверен, что замена должна была быть, если таковая имеется.
Что мы должны использовать для поиска по часовому поясу BCL в порту .NET Core NodaTime?
Если бы я мог санкционировать, что весь мир с помощью часовых поясов IANA , Я бы ... Увы, ical.net - это библиотека для создания и потребления файлов icalendar (ics), созданных из таких приложений, как Google Calendar, Outlook, Apple Mail и т. Д., Поэтому она должна быть довольно разрешительной в том, что она поддерживает. Например: https : //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_, как и I d: https://docs.microsoft.com/en-us/dotnet/core/api/system.timezoneinfo#System_TimeZoneInfo_Id - они не поддерживаются каким-либо другим способом? – rianjs
@rianjs: Хм ... они не существовали в предыдущих профилях, на которые я нацелился (и на эту цель 1.x). У вас будет еще один взгляд на .Net Core ... хотя я нашел несколько вещей, которые говорят «поддерживается в PCL», но потом фактически не строятся. Документы для управления версиями оставляют желать лучшего. –