在JavaScript和Dynamics CRM中设置正确的时区

在JavaScript和Dynamics CRM中设置正确的时区,javascript,dynamics-crm,momentjs,Javascript,Dynamics Crm,Momentjs,我对时区很困惑 我从CRM Soap服务获取的所有DateTime字段都设置为本地客户端时区。例如,中欧标准时间为+1 但是用户可以在Dynamics CRM中设置自己的时区,因此我必须将服务检索的本地时区转换为用户设置的时区(例如(GMT-06:00)中美洲) 我可以从CRM获取的时区用户设置的所有元数据如下: { "name": "timezonecode", "type": "Int32", "value": "256" }, { "name": "user

我对时区很困惑

我从CRM Soap服务获取的所有DateTime字段都设置为本地客户端时区。例如,中欧标准时间为+1

但是用户可以在Dynamics CRM中设置自己的时区,因此我必须将服务检索的本地时区转换为用户设置的时区(例如(GMT-06:00)中美洲)

我可以从CRM获取的时区用户设置的所有元数据如下:

{
    "name": "timezonecode",
    "type": "Int32",
    "value": "256"
},
{
    "name": "userinterfacename",
    "type": "String",
    "value": "(GMT+10:00) Canberra, Melbourne, Sydney (Commonwealth Games 2006)"
},
{
    "name": "standardname",
    "type": "String",
    "value": "Canberra, Melbourne, Sydney (Commonwealth Games 2006)"
},
{
    "name": "timezonebias",
    "type": "Int32",
    "value": "360"
},
{
    "name": "timezonedaylightbias",
    "type": "Int32",
    "value": "-60"
},
Dynamics CRM没有为我提供格式良好的元数据来简单地转换当前时区。也许我可以处理Date()对象的setMinutes(),但这不会改变对象本身的时区。虽然我加了180分钟,但仍然是(GMT+1)


允许使用moment.js:-)

我不相信你上面说的是对的。如果您使用的是CRMSDK,则所有日期时间值都将返回为UTC。SDK接受本地或UTC时间进行创建和更新。本文深入了解了CRM如何处理日期和时间:

如果您是通过SDK DateTime更新日期时间字段,请小心。现在将返回本地时间(带有时区偏移量),这有时会让人感到困惑

根据我的经验,使用CRM的最佳方法是始终将日期和时间保留为通用时间,并让浏览器转换为本地时间

您始终可以从CRM()中检索用户时区设置,并将UTC时间从CRM转换为本地时间,这是一种万不得已的策略