Я только что добавил поддержку строк часового пояса POSIX в качестве дополнения для моего TimeZoneConverter проекта.Он находится в отдельной упаковке под названием TimeZoneConverter.Posix
.Установите его, и вы можете сделать следующее:
string posix = PosixTimeZone.FromTimeZoneInfo(SomeTimeZoneInfoObject);
Кроме того, вы можете просто указать идентификатор часового пояса Windows или имя часового пояса IANA, и это также будет работать:
string posix = PosixTimeZone.FromWindowsTimeZoneId("Eastern Standard Time");
// Result: "EST5EDT,M3.2.0,M11.1.0"
string posix = PosixTimeZone.FromIanaTimeZoneName("Australia/Sydney");
// Result: "AEST-10AEDT,M10.1.0,M4.1.0/3"
Имейте в виду, что вы все еще подвержены ограничениям часовых поясов POSIX:
- Они могут поддерживать только два перехода в год.
- Не все переходы часовых поясов предназначены дляDST.Некоторые для изменений в стандартном времени, и это не отражено здесь.Они будут выглядеть как переходы DST.
- Они не предоставляют каких-либо исторических изменений самим себе.
В последнем пункте в показанных выше примерах используется current year, но существуют также перегрузки для предоставления года для генерации строки, специфичной для этого года.