我有一个字段为“Birthday
”的项目。值为“15/03/1977
”,原始值为“19770315T000000
”。我从here
现在以下代码的输出是:
var item = Sitecore.Context.Database.GetItem("{8935CD35-5EAD-4C8E-B85C-E95E9B1ED5C3}");
DateField dateField = (DateField)item.Fields["Birthdate"];
// DateTime object
var date = dateField.DateTime.Date;
// String
lblTest.Text = date.ToString();
输出:
3/14/1977 12:00:00 AM // Instead of 15 here date is 14
如果我将字符串格式化为“dd-MM-yyyy
”:
lblTest.Text = date.ToString("dd-MM-yyyy");
输出
14-03-1977
我不知道为什么会有这种差异,保存的日期为15/03/1977
,输出为14-03-1977
。
第二个问题是,在上面的代码var date = dateField.DateTime.Date;
中,我将.Date
分配给变量date
,但在输出中,如果没有提供格式,我仍然会看到时间。我在谈论这个lblTest.Text = date.ToString();
答案 0 :(得分:3)
这可能是因为Sitecore 8中的DateTime字段原始值添加了时区。
此博文中描述的类似问题: Sitecore 8 ServerTimeZone – my dates are all wrong
新格式最后包含20160907T120740Z
(例如Sitecore.DateUtil.ToServerTime(dateField.DateTime).ToString("dd-MM-yyyy");
),它是UTC时间的ISO 8601日期时间标准的一部分,并表示该时间是UTC。
我不能100%确定这是否会对您有所帮助,但您可以尝试:
set.addAnimation(anim);
答案 1 :(得分:0)
第二个问题是,在上面的代码中var date = dateField.DateTime.Date;我将.Date分配给变量日期,但在输出中,如果没有提供格式,我仍然会看到时间。我在谈论这个lblTest.Text = date.ToString();
System.DateTime.Date属性仍然是DateTime对象,只是时间片段的默认值。如果您想丢失时间片段,则需要应用格式。