如何确定日间节能是否对指定日期和TimeZone使用Javascript有效?

时间:2013-11-05 14:02:15

标签: javascript timezone dynamics-crm dst

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

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

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

提前感谢您的帮助。

电贺!

2 个答案:

答案 0 :(得分:1)

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

甚至没有任何适用于Windows时区标识符的JavaScript库,例如从.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解决方案,我很抱歉,但据我所知,这不存在。您必须自己构建它并在时区数据更改时进行维护。

答案 1 :(得分:0)

当给定时区作为输入时,这将返回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