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

时间:2015-09-12 10:38:42

标签: c# datetime sitecore

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

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

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

enter image description here

您可以看到DateTime的日期是9月13日,但Value的日期是9月14日。

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

3 个答案:

答案 0 :(得分:5)

这是因为内部Sitecore以UTC格式存储所有日期。如果你的时区与UTC有很大差异 - 你可能会遇到这种情况。使用 Sitecore.DateUtil 让Sitecore为您做“脏工作”。

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

答案 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接受的链接已被破解,我无法发表评论,所以我在这里添加了一个工作链接:

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