![]() |
1
4
在SDK中工作的任何时候,DateTime都会被检索并存储为UTC。CRM web平台将UTC时间转换为用户的时间。你不需要做任何时间转换,只需要使用UTC。 让我们假设您的当地时间是UTC-1(使用DST,因为UTC没有观测到它)。因此,如果UTC是14:00,您的当地时间是13:00。 我们还假设您的插件将填充当前时间(明天)的实体的日期属性。如果代码如下所示:
假设DateTime.Now是13:00,它将13:00存储在数据库中(就像是UTC一样)。然后,当您从CRM网站查看时间值时,由于您是UTC-1,它将显示12:00,尽管您希望13:00。 现在,如果您的代码如下所示:
假设DateTime.UtcNow是13:00,则它将在数据库中存储14:00,因为DateTime.UtcNow是14:00。然后,当你从CRM网站上查看时间值时,由于你是UTC-1,它将显示13:00,因为它将采用UTC值-1。 现在,如果您的代码如下所示:
new_UserEnteredDateFromCrm将已经从用户的时区转换为UTC,它将按预期工作。 这使得你更喜欢作为日期存储的DateTimes变得非常困难(任何人的生日?),你可能需要更深入地思考它。 |
![]() |
2
0
我自己想好了。该日期中有一个组件,它探究它的日期时间类型。它可以是Utc、Local或Unspecified。 当您通过代码向CRM属性传递任何日期时。确保日期时间类型为Utc,否则CRM服务内部操作会将其转换为Utc。 在我的情况下,我被困在了这一点上,因为当我从CRM中读取日期时,我必须在该日期开始办公。例如,我需要 03/02/2014 12:00 到 03/02/2014 8:30 使进入日期与办公开始时间一致。我在做手术,
将InDate设置为Utc Time时,我正在创建新的日期对象,因此它将DateTime类型从Utc更改为Local(在DST中,它意味着要提前1小时) 要避免,请始终将DateTime类型设置为与提供给新对象的日期完全相同。例如上述操作可以类似地替代地进行。
希望有帮助。 |