问题描述
|
夏令时开始于3月27日在爱尔兰。从那时起,任何已添加到Dynamics的记录都将任何日期字段设置为比实际添加时间晚一小时。
奇怪的是,Web UI正确返回了日期,而使用sql Server和XRM进行查询时错误地返回了日期。
服务器计算机上的时间设置正确,我已经安装了汇总16,还有什么可以尝试的吗?
谢谢,
大卫
解决方法
Dynamics CRM以UTC格式存储所有日期时间值。
与Web前端一起输入的所有数据在存储时都会自动转换为UTC,在读取时会转换回用户时区。
如果使用的是Dynamics CRM Outlook客户端,则使用Windows的时区设置。如果使用Web客户端,它将在您的个人选项中使用时区设置。确保它是正确的。
开发包
SDK始终使用UTC作为日期,并且不进行任何转换。您有责任以适当的方式转换数据。但是,CrmDateTime类包含一些有用的方法和属性。
报告书
确保仅访问FilteredViews(例如FilteredAccount,这是唯一支持的数据库用法)。日期字段将自动转换为正确的时区(根据用户设置)。如果需要访问原始值,则可以将其作为带有utc后缀的列(createdon-> createdonutc)使用。要根据用户/系统设置格式化日期值,您还可以在报告中访问这些设置。请参见\“格式化内容\”
,方便使用的还有Dynamics CRM随附的两个UDF:
fn_UTCToLocalTime(@dateTime)
fn_LocalTimeToUTC(@dateTime)
这些使用系统用户声明的时区与UTC进行相互转换,并考虑DST。
,看来我的问题已解决,方法是将DateTime值从UTC转换为本地时间。
(我希望将ckeller的评论标记为答案,但似乎没有办法做到。非常感谢ckeller。)