Sitecore DateField 的 DateTime 属性 显示错误的日期

Sitecore DateField's DateTime property shows wrong date

在我的 Sitecore 项目中,我使用 DateTime(Sitecore 的类型)字段作为 Item 的 属性。我正在尝试通过以下代码获取此值:

var dateField = (DateField)item.Fields["Date"];
var itemDate = dateField.DateTime;

但是 itemDate 包含错误的日期。 让我们检查一下 dateField.Value:它包含格式正确的日期:yyyymmddThhmmss。您可以在以下屏幕截图中看到:

如您所见,DateTime 的日期是 9 月 13 日,而 Value 的日期是 9 月 14 日。

出现这个问题的原因是什么?如何从 DateField 获取正确的数据作为 DateTime

我找到了如何从 DateField 获取正确数据的解决方案,如 DateTime:

var dateField = (DateField)item.Fields["Date"];
var itemDate = Sitecore.DateUtil.IsoDateToDateTime(dateField.Value);

发生这种情况是因为 Sitecore 在内部以 UTC 格式存储所有日期。如果您的时区与 UTC 有很大差异 - 您很可能会遇到这种情况。使用 Sitecore.DateUtil 让 Sitecore 为您做 "dirty job"。

https://doc.sitecore.net/sitecore_experience_platform/setting_up_and_maintaining/utc/datetime/datetime_best_practices

您可以使用Sitecore.DateUtil.IsoDateToDateTime来正确转换日期。还有一个覆盖 treatLegacyDatesAsUtc 可以帮助获得正确的 UTC 时间。

我注意到 Martins 接受的答案中的 link 被破坏了,我无法 post 评论所以我在这里添加了一个有效的 link:

https://doc.sitecore.net/sitecore_experience_platform/setting_up_and_maintaining/utc/datetime/datetime_best_practices