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"。
您可以使用Sitecore.DateUtil.IsoDateToDateTime
来正确转换日期。还有一个覆盖 treatLegacyDatesAsUtc
可以帮助获得正确的 UTC 时间。
我注意到 Martins 接受的答案中的 link 被破坏了,我无法 post 评论所以我在这里添加了一个有效的 link:
在我的 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"。
您可以使用Sitecore.DateUtil.IsoDateToDateTime
来正确转换日期。还有一个覆盖 treatLegacyDatesAsUtc
可以帮助获得正确的 UTC 时间。
我注意到 Martins 接受的答案中的 link 被破坏了,我无法 post 评论所以我在这里添加了一个有效的 link: