часовых поясов Microsoft, такие как те, которые используются в TimeZoneInfo
объекта, на самом деле может быть сериализации и десериализации, используя FromSerializedString
и ToSerializedString
методы. На них также можно ссылаться со своим имуществом Id
. Оба они относятся к классу TimeZoneInfo
, а не к классу TimeZone
(который вы не должны использовать вообще).
Однако, если вы отправляете идентификатор часового пояса Microsoft или сериализованную форму часового пояса, ваш API будет доступен только для других приложений .NET. У вас будет очень трудное время, используя часовые пояса Microsoft за пределами .NET.
Для часовых поясов нет официального стандарта, но наиболее близкими будут идентификаторы, предоставленные IANA time zone database. Например, чтобы передать восточный часовой пояс США, вы должны передать "America/New_York"
в свой API. Вы можете узнать больше об этом в the timezone tag wiki, а также on Wikipedia. Самое приятное в часовых поясах IANA заключается в том, что оно реализовано на каждой платформе - поэтому, хотя это не стандарт, оно гораздо более переносимо, чем временные зоны Microsoft, которые работают только в Windows.
Для .NET лучшим способом, который я знаю для работы с часовыми поясами IANA, является библиотека Noda Time. Например:
DateTimeZone tz = DateTimeZoneProviders.Tzdb["Asia/Tokyo"];
Вы можете прочитать в Нода времени user guide.
Если вы уже создали свою систему около TimeZoneInfo
, учтите, что вы все равно можете перевести на часовые пояса IANA на вашем уровне API. Вы можете прочитать о том, как это сделать in this answer.
Не знаю, что я знаю. Но часовой пояс на самом деле не является сущностью, он больше похож на объект, определенный смещением по часовой стрелке, имя (которое может быть интернационализировано или нет) и, возможно, другие интересующие атрибуты. Я бы адаптировал то, что возвращает API, исходя из того, какими минимальными требованиями были бы варианты использования. Из моего опыта придерживаться стандартов учета времени, которые выходят за пределы UTC или Unix, только усиливает усилия и делает результат более подверженным проблемам. – Sandman