当我通过crm Web服务(CRM SDK)检索实体时,在一台服务器上收到一个非常奇怪的行为。 在CRM(网络界面)中,存储的日期(仅日期)为:18.02.2019(UTC + 1) 数据库显示:17.02.2019 23:00:00(UTC)
在这一部分,一切都是正确的。 但是,当我在控制台应用程序(=在CRM服务器上运行)上检索记录时,提到的字段设置为 18.02.2019 23:00:00 (所以在UTC + 1中为19.02.2019)。 在我的电脑上本地运行应用程序,它会返回正确的日期时间 17.02.2019 23:00:00 。 有没有我错过的服务器设置? 服务器上的时区为柏林UTC + 1阿姆斯特丹。
答案 0 :(得分:0)
这可能与控制台应用中的DateTime的Kind property有关。
您可以使用以下方法解决此问题:
DateTime.SpecifyKind(myDateTime, DateTimeKind.Utc);
或者简单地:
myDateTime.ToUniversalTime()
答案 1 :(得分:0)
有许多不同的Behavior and format of the date and time attribute。根据您的情况,我怀疑其中之一会解释您所看到的行为。
UserLocal
- 检索操作返回UTC值。
- 检索格式值会根据UTC的时区和区域设置将UTC转换为用户的当前时区 用户。
仅日期
- 对于检索和更新操作,不执行任何时区转换,并且时间值始终为12 AM(00:00:00)。
- 检索格式化的值将显示日期值,而无需进行任何时区转换。
TimeZoneIndependent
- 对于检索和更新操作,不执行时区转换,而是返回和更新实际的日期和时间值
不论用户时区如何,都分别在系统中。- 检索格式化的值会根据指定的格式显示日期和时间值(不进行任何时区转换)
根据当前用户的时区和语言环境设置。