在我的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
?
答案 0 :(得分:5)
这是因为内部Sitecore以UTC格式存储所有日期。如果你的时区与UTC有很大差异 - 你可能会遇到这种情况。使用 Sitecore.DateUtil 让Sitecore为您做“脏工作”。
答案 1 :(得分:3)
我找到了解决方案如何从DateField
获取正确的数据DateTime
:
var dateField = (DateField)item.Fields["Date"];
var itemDate = Sitecore.DateUtil.IsoDateToDateTime(dateField.Value);
答案 2 :(得分:0)
您可以使用Sitecore.DateUtil.IsoDateToDateTime
正确转换日期。还有一个覆盖treatLegacyDatesAsUtc
,可以帮助获得正确的UTC时间。
我注意到Martins接受的链接已被破解,我无法发表评论,所以我在这里添加了一个工作链接: