Насколько я понимаю, вам не нужны никакие дополнительные пакеты для этого сценария.
- Для идентификаторов IANA просто используйте
DateTimeZoneProviders.Tzdb
- для "необработанного смещения"«Идентификаторы, вы можете использовать любого провайдера часового пояса, запрашивая идентификатор в форме« UTC + 01: 00 »и т. Д. (Поэтому вам нужно добавить префикс« UTC ».)
- Для Windowsсопоставление зон, вы можете использовать
TzdbDateTimeZoneSource.Default
для получения информации TZDB по умолчанию, а затем использовать свойство WindowsMapping
, чтобы получить объект WindowsZones
, который можно использовать для сопоставления.
TimeZoneConverter
может быть проще использовать для последнего пункта, но это не обязательно.Идентификаторы IANA, которые он предоставляет , должны нормально работать с Noda Time.
TimeZoneNames
больше о отображении имен часовых поясов для пользователей.Если вам это не нужно, вам, вероятно, не нужен пакет.
Обратите внимание, что сохранение всех данных в формате UTC может быть действительно плохой идеей - трудно сказать беззная больше о вашем приложении.Если вы имеете дело только со значениями в прошлом, или если они зафиксированы во времени, это нормально.Но если вы позволяете пользователям планировать будущие события, я бы сохранил значения, которые дал вам пользователь.Вот пример того, почему ...
Предположим, что пользователь говорит, что хочет запланировать мероприятие для Европы / Парижа на 9 часов утра 1 декабря 2021 года. Если вы преобразуете его в UTC сейчас , выв конечном итоге с 2021-12-01T08: 00Z, потому что текущие правила о часовых поясах говорят, что Париж будет на UTC + 1 в декабре 2021 года.
Однако вполне возможно, что с настоящего момента до 2021 года, Францияизменил правила своего часового пояса, чтобы использовать «постоянное дневное время», т.е. UTC + 2 круглый год.В этот момент ваше значение UTC 2021-12-01T08: 00Z будет соответствовать 10:00 утра в Париже на указанную дату - вопреки тому, что указал пользователь.
Также можно преобразовать в UTC , чтобы вы могли создать полностью упорядоченное представление данных, при условии, что вы сохраняете достаточно информации для повторного преобразования каждый раз, когда появляются новые данные о часовых поясах.
Как я уже сказал, это может бытьпроблема для вас, но стоит знать, что «полученная мудрость» «Всегда хранить все в UTC» - действительно плохой совет для всех сценариев.