【问题标题】:How to determine if day light saving is in effect for a given date and TimeZone using Javascript?如何使用Javascript确定给定日期和时区的夏令时是否有效?
【发布时间】:2013-11-16 10:26:09
【问题描述】:

是否有任何 JavaScript 库可用于检查夏令时是否在特定位置的特定时间生效。

例如,如果夏令时有效,我想知道一个日期,在时区代码中说“7 月 1 日 05:30:00 UTC+0500 2009”,例如 110。附加信息总是可以接受的。

时区代码可以在这里找到 - http://msdn.microsoft.com/en-us/library/bb887715.aspx

提前感谢您的帮助。

你好!

【问题讨论】:

  • 感谢您的回答。我的问题很简单。服务器的时区与我尝试访问它的地方不同。我需要知道服务器所在的地方在给定时间内是否有夏令时。再次感谢。
  • 您使用 MS Dynamics CRM 时区代码有什么原因吗?如果是这样,您为什么需要 javascript 答案??
  • 您可能还想阅读this question,了解如何从 CRM 时区代码中获取常规的 TimeZoneInfo 标识符。但是,您应该在 .net 中完成所有这些操作,而不是在 javascript 中。
  • 感谢您帮助我。我正在将 CRM 中的元数据读入我的 Javascript。最大的问题 - 我只有时区代码。我只需要知道给定时间的夏令时是否对 CRM 的时区有效。是的,我必须在 Javascript 中执行此操作。再次感谢。

标签: javascript timezone dynamics-crm dst


【解决方案1】:

Javascript 对 CRM 时区代码一无所知。

甚至没有任何好的 JavaScript 库可以使用 Windows 时区标识符,例如在 .NET 中使用 TimeZoneInfo 或浏览 Windows 注册表时会找到的库。

如果您需要在 JavaScript 中使用时区,则需要转换为 IANA/Olson 时区标识符,然后使用 of the libraries I mentioned here

如果您可以在服务器上使用 .NET,则可以使用 this method 将 CRM 时区 ID 转换为 Windows 时区 ID。然后,您可以使用 this method 从 Windows 转换为 IANA 时区。但是如果你无论如何都要在服务器上做这么多的工作,我不明白你为什么不也在那里做你的数据转换。

如果您正在寻找可以直接从 CRM 时区 ID 运行的纯 JavaScript 解决方案,很抱歉,但据我所知,这并不存在。您必须自己构建它并在时区数据发生变化时对其进行维护。

【讨论】:

    【解决方案2】:

    当输入时区时,这将返回 truefalse

    function stdTimezoneOffset() {
        var d = new Date();
        var jan = new Date(d.getFullYear(), 0, 1);
        var jul = new Date(d.getFullYear(), 6, 1);
        return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
    }
    function dst(offset) {
        var d = new Date(); // create Date object for the current location
        var utc = d.getTime() + (d.getTimezoneOffset() * 60000); // get UTC time in milliseconds
        var nd = new Date(utc + (3600000 * offset)); // Create net Date() for city with offset
        return d.getTimezoneOffset() < stdTimezoneOffset();
    }
    alert(dst('-5.0')); //New York
    

    【讨论】:

    • 这是有缺陷的。你犯了两个常见的错误。 1)您无法仅从其偏移量中识别时区。 -5.0 不仅适用于纽约。 2) DST 在世界各地的运作方式不同。这段代码最好的做法是使用您自己当地时区的 DST 概念,并错误地将其应用到其他地方。您应该阅读timezone tag wikithe dst tag wiki 的“时区!= 偏移量”部分。
    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 2013-05-25
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2020-04-29
    • 2011-10-10
    相关资源
    最近更新 更多