首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >夏令时与Javascript

问夏令时与Javascript
EN

Stack Overflow用户
提问于 2012-10-19 00:33:53
回答 2查看 587关注 0票数 2

好的,我知道如何检查某一天是否在DST-frame中。但是,如果提供日期对象的系统已经处于DST模式,并且您不知道“正常”时区,那么有什么方法可以获取信息吗?用户可能会关闭该功能,或者仍然需要重新启动或类似的事情。大多数系统在SysAPI中提供某种标志来检查…有没有办法从js那里得到这些信息?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-19 00:38:29

可能不会。

JavaScript语言(ECMAScript第5版)没有提供任何这样的功能。

您也许能够通过ActiveXObject等扩展访问它,但我怀疑是否有任何可靠的、跨浏览器/跨平台的方法来检测操作系统或用户是否正在使用任何夏令时设置。

这个Microsoft Technet article演示了如何使用VBScript在几个版本的Windows上检测DST (这很可能与JScript中的类似),但是,同样,这不太可能是你可以可靠地做的事情(如果有的话,取决于你的用例的具体情况)。

票数 2
EN

Stack Overflow用户

发布于 2014-04-14 02:18:02

如果提供日期对象的系统已经处于DST模式,而您不知道“正常”时区,

有什么方法可以获取信息吗?

我不确定我的问题是否正确。基本上,我只看到两种可能性:

a) DST功能关闭或时区根本没有DST帧:我们总是知道标准时间,因为没有DST时间。

b)打开DST功能,并且存在时区的DST帧:夏季和冬季日光的UTC偏移量是不同的,标准偏移量是冬季日光的标准偏移量,即在12月(北半球)或6月(南半球)。

这将为我们提供以下信息:

代码语言:javascript
复制
function checkDST() {

  var
    now = new Date();
    year = now.getFullYear(), // current year
    june = new Date(year, 5, 21, 12), // solistice 1
    december = new Date(year, 11, 21, 12); // solistice 2
    decTzo = december.getTimezoneOffset(),
    junTzo = june.getTimezoneOffset(),
    nowTzo = now.getTimezoneOffset(),
    dstDiff = decTzo - junTzo,
    msgNoDst = "Your system does not observe Daylight Savings. UTC offset: " + nowTzo,
    msgDstN = "Northern hemisphere. UTC offset: " + nowTzo + ", standard offset: " + decTzo,
    msgDstS = "Southern hemisphere. UTC offset: " + nowTzo + ", standard offset: " + junTzo;

    if (dstDiff === 0) { return msgNoDst; }
    if (dstDiff > 0) { return msgDstN; }
    return msgDstS;
}

alert(checkDST());

-如果偏移量dec-jun的差值为正-例如,对于柏林-60-(-120) = +60,则位置在北半球,标准偏移量为12月。

-如果偏移量12月-6月的差值为负-例如,对于阿德莱德-630-(-570) = -60,则位置在南半球,标准偏移量为6月。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12959420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档