3

我需要将 UTCDateTime字符串转换为ZonedDateTime.

UTCDateTime字符串只能是一种模式,因为 SharePoint类型列(M/dd/yyyy h:mm:ss tt)中仅支持此格式。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, 和minuteasint值。有没有更简单的方法可以ZonedDateTime直接从 UTC 字符串中获取?

4

1 回答 1

4

我认为您对源数据感到困惑。SharePoint 不存储日期字符串。它将它们存储为DateTime类型。它们位于 UTC,但它们不是字符串。

如果你有一个字符串表示,那么在你的代码中的某个时刻你做了一个.ToString()或类似的,它选择了默认的"G"格式说明符

所以你应该能够使用:

var inst = Instant.FromDateTimeUtc(yourDateTime);
var dz = new ZonedDateTime(inst, dateTimeZone);

您拥有的另一个选项是使用DateTimeOffsetSharePoint 中的字段而不是 UTCDateTime字段。 在这里阅读。然后你可以使用Instant.FromDateTimeOffset().

于 2013-05-28T16:12:59.413 回答