CRM365日期转换异常:1983年10月1日自动变为9月30日求助
问题原因解析
这个异常的核心原因是你使用的GMT+3时区(对应实际如莫斯科等东欧/中亚时区)在1983年10月1日存在历史时区偏移规则变更,具体逻辑拆解如下:
User Local类型Date Only字段的转换逻辑:
当用户选择Date Only的User Local字段时,系统会默认将选中的本地日期映射为该日期的午夜00:00:00本地时间,再转换为UTC时间存储;读取时则把UTC时间转回用户本地时区的日期显示。1983年10月1日的特殊时区转换:
在1983年10月1日当天,该时区的本地午夜00:00:00对应的UTC时间是1983年9月30日23:00:00。由于CRM存储的是UTC时间,当反向转换回本地时区时,这个UTC时间对应的本地日期就变成了9月30日,而非用户最初选择的10月1日。其他日期无异常的原因:
除这个特定日期外,其他日期的本地午夜00:00:00转换为UTC时间后,不会出现跨天的情况,因此显示结果和用户选择的日期一致。
内容的提问来源于stack exchange,提问作者Yosem
相关产品推荐
相关产品推荐

