【问题标题】:CRM365 doesn't convert to the local time only the date 1 October 1983 on the formCRM365 仅在表格上的 1983 年 10 月 1 日日期不会转换为当地时间
【发布时间】:2022-09-27 13:44:39
【问题描述】:
我们在联系人实体表单上有 Datebirth 字段。当用户选择 1983 年 10 月 1 日时,系统会自动将其更改为 1983 年 9 月 30 日。
然而,这种魔法不会发生在其他日期。
字段行为是用户本地。格式为仅限日期。我们的时区 GTM +3。在正确更改字段值时,Crm 会将其转换为 GTM +0。我们也不能改变行为。
1983 年 10 月 1 日的神秘主义可能是什么?
标签:
datetime
dynamics-365
【解决方案1】:
我们已经分析了这个问题 2 天。终于找到了问题的核心。问题是 1983 年 9 月 30 日和 1982 年 9 月 30 日是夏令时 (DTS) 日期。
例如,当将日期选中1983年10月1日00:00并保存到数据库(MS SQL Server)中时,它将转换为Greenwich的平均时间+0(GMT +0)。在我们的例子中 (GMT +3),时间必须是 09/30/1983 21:00:00。
但是函数中减去了一个额外的小时[DB_name]/可编程性/标量值函数/fn_UTCToTzSpecificLocalTime,因为在切换到冬季时间时,时钟会拨回一个小时。因此,时间 09/30/1983 20:00:00 保存在 DB 中,而不是 09/30/1983 21:00:00。
因此,当 crm 在表单上显示时间 09/30/1983 20:00:00 时,会将其转换为本地时间(增加 3 小时)。这就是我们看到 09/30/1983 23:00:00 的原因。
我们在 DB 中增加了 1 小时来解决这个问题。