UTC Дата строка времени в Zoned DateTime с использованием NodaTime
Мне нужно конвертировать UTC DateTime
строка в ZonedDateTime
,
UTC DateTime
Строки могут быть только один шаблон(M/dd/yyyy h:mm:ss tt)
так как только этот формат поддерживается в SharePoint DateTime
введите столбец.
При условии, что (5/28/2013 1:00:00 PM)
как мое время UTC, как я могу преобразовать его в ZonedDateTime
? В настоящее время я использую приведенный ниже код для получения ZonedDateTime
,
var dateTimeZone = DateTimeZoneProviders.Tzdb[zoneID];
var inst = Instant.FromUtc(year, month, day, hour, minute);
ZonedDateTime dz = new ZonedDateTime(inst, dateTimeZone);
Приведенный выше код требует year
, month
, day
, hour
, а также minute
как int
ценности. Есть ли более простой способ получить ZonedDateTime
прямо из строки UTC?
1 ответ
Я думаю, что вы не уверены в своих исходных данных. SharePoint не хранит строки для дат. Хранит их как DateTime
типы. Они в UTC, но они не строки.
Если у вас есть строковое представление, то в какой-то момент в вашем коде вы сделали .ToString()
или аналогичный, и он взял по умолчанию "G"
спецификатор формата.
Так что вы должны просто иметь возможность использовать:
var inst = Instant.FromDateTimeUtc(yourDateTime);
var dz = new ZonedDateTime(inst, dateTimeZone);
Другой вариант - использовать DateTimeOffset
поля в SharePoint вместо UTC DateTime
поля. Читайте здесь. Тогда вы можете использовать Instant.FromDateTimeOffset()
,