SharePoint DateTime默认值尊重时区

我有一个DateTime字段(仅限日期),它使用“今天的日期”作为默认值。 但是,当用户将项目添加到列表时,所选择的日期分别对应于GMT时区。

因此,如果用户在2012年2月22日下午7点(美国东部时间)添加项目,则默认值实际上为2/23/2012。

我的第一个想法是检查Web应用程序设置,它们被设置为-5 EST。 然后经过一些搜索,我发现时区可能会因用户区域设置而有所不同。 测试这种方法,我手动设置用户有一个EST时区,并执行产生相同结果的测试。

最后,经过更多搜索,我发现一篇文章说要使用DateTime字段的Calculated Value部分并指定“= NOW()”

但是返回“公式包含语法错误或不支持”。

有没有人知道如何让DateTime字段的默认值尊重Web应用程序或用户的时区?

谢谢。

Sharepoint以UTC格式存储所有日期字段。 也就是说,如果要在列表中保存日期时间字段,Sharepoint实际上会将您选择的时间转换为UTC,并将其转换回该人在检索时所处的任何时区。

首先检查服务器时区与客户端之间是否存在差异。 使用任何API时,SharePoint将始终返回UTC时间,并将其留给您在您的界面或应用程序中进行转换。

如果您希望以不同方式解决此问题,则无法使用datetime数据类型,而是将日期存储在文本字段中。

==更新==

如果您从SharePoint获得了一个日期(始终使用UTC)并且只想将其转换为您当地的时间,这是一个很好的做法

DateTime localDateTime = sharePointDate.ToLocalTime(); 

如果您将日期作为字符串,或者不确定格式,那么这可能是一个好方法

 string dateStr = ("2/18/2012 9:49:51 PM").ToString(CultureInfo.InvariantCulture); DateTime convertedDate = DateTime.SpecifyKind(DateTime.Parse(dateStr), DateTimeKind.Utc); DateTime localDateTime = convertedDate.ToLocalTime(); // Outputs 2/18/2012 10:49:51 PM since I'm +1 in sweden