我需要将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
值。是否有更简单的方法直接从UTC字符串中获取ZonedDateTime
?
答案 0 :(得分:3)
我认为您对源数据感到困惑。 SharePoint不存储日期的字符串。它将它们存储为DateTime
类型。它们是UTC,但它们不是字符串。
如果您有字符串表示形式,那么在代码中的某个位置您执行了.ToString()
或类似操作,并且它选择了默认的"G"
format specifier。
所以你应该能够使用:
var inst = Instant.FromDateTimeUtc(yourDateTime);
var dz = new ZonedDateTime(inst, dateTimeZone);
您拥有的另一个选项是在SharePoint中使用DateTimeOffset
字段而不是UTC DateTime
字段。 Read here。然后,您可以使用Instant.FromDateTimeOffset()
。