У меня есть строка с датой в Чили: "2018-04-23"
В моей стране, когда я пишу этот пост, смещение часового пояса составляет -4 часа.
Но возвращаясь к этой дате (23 апреля), смещение часового пояса составило -3 часа.
Соответствующим TimeZoneInfo
, содержащим эти произвольные изменения смещения, является следующее:
var tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");
Моя цель - сохранить эту дату (2018-04-23) в SQL Server, в столбце типа DateTimeOffset
Таким образом, эта дата должна быть сохранена как: «2018-04-23 00: 00: 00.000 -03: 00» (при визуальном осмотре с использованием Management Studio)
Как я могу достичь этого программно?
Я попробовал следующее:
var date = DateTime.Parse("2018-04-23");
var tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");
var utcDate = TimeZoneInfo.ConvertTimeToUtc(date, tzi);
var offset = tzi.GetUtcOffset(utcDate);
return ((DateTimeOffset)utcDate).ToOffset(offset);
Но ...
- Не работает (сохраняется как «2018-04-23 00: 00: 00.000 -04: 00»)
- Это слишком грязно
Другой способ задать то же самое заключается в следующем:
У меня есть местная дата в нестандартном формате: "2018-04-23"
Соответствующий часовой пояс для этого местоположения: "Pacific SA Standard Time"
Я хочу ту же дату в стандартном формате ISO: «2018-04-23 00: 00: 00.000 -03: 00»
Как мне этого добиться?
Входы:"2018-04-23" и "Стандартное время Pacific SA"
Вывод:"2018-04-23 00: 00: 00.000 -03: 00"