【问题标题】:Set correct TimeZone in JavaScript and Dynamics CRM在 JavaScript 和 Dynamics CRM 中设置正确的时区
【发布时间】:2017-02-01 09:30:11
【问题描述】:

我真的对时区感到困惑。

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

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

我可以从 CRM 获取的 TimeZones 用户设置的所有元数据是:

{
    "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() ,但这不会改变对象本身的 TimeZone 。虽然我添加了 180 分钟,但它仍然是 (GMT +1)。

moment.js 是允许的 :-)

【问题讨论】:

    标签: javascript dynamics-crm momentjs


    【解决方案1】:

    我不相信你上面所说的是正确的。如果您使用 CRMSDK,则所有日期时间值都以 UTC 格式返回。 SDK 接受本地时间或 UTC 时间进行创建和更新。本文提供了有关 CRM 如何处理日期和时间的很好的见解:http://develop1.net/public/post/Dynamics-CRM-DateTimes-the-last-word.aspx

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

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

    Convert UTC date time to local date time using JavaScript

    您始终可以从 CRM (http://missdynamicscrm.blogspot.com.au/2015/04/get-current-user-setting-timezone-crm-c.html) 检索用户时区设置,并将 UTC 时间从 CRM 转换为本地时间,作为最后的策略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多