Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript时区脚本为美国如何做夏时制_Javascript_Time_Timezone Offset - Fatal编程技术网

javascript时区脚本为美国如何做夏时制

javascript时区脚本为美国如何做夏时制,javascript,time,timezone-offset,Javascript,Time,Timezone Offset,我有一个工作脚本,我推到我们组织中每个人的IE收藏夹列表中(见下文)。根据办公室在公司的地理位置,它们被路由到4个URL中的1个 <html> <body> <script language="JavaScript"> var today = new Date(); var offset = (today.getTimezoneOffset() / 60) + 1; if (offset == 5) document.location.href = "url

我有一个工作脚本,我推到我们组织中每个人的IE收藏夹列表中(见下文)。根据办公室在公司的地理位置,它们被路由到4个URL中的1个

<html>
<body>

<script language="JavaScript">
var today = new Date();
var offset = (today.getTimezoneOffset() / 60) + 1;
if (offset == 5) document.location.href = "url=EASTERNtime.com";
else if (offset == 6) document.location.href = "url=CENTRALtime.com";
else if (offset == 7) document.location.href = "url=MOUNTAINtime.com";
else if (offset == 8) document.location.href = "url=pacifictime.com";
else document.location.href = "url=pickyourowntimezone.com";

</script>
</body>
</html>

var today=新日期();
var offset=(today.getTimezoneOffset()/60)+1;
如果(偏移量==5)document.location.href=“url=EASTERNtime.com”;
else if(offset==6)document.location.href=“url=CENTRALtime.com”;
如果(偏移量==7)document.location.href=“url=MOUNTAINtime.com”;
如果(偏移量==8)document.location.href=“url=paciVirtualName.com”;
else document.location.href=“url=pickyourowntimezone.com”;
我想知道的是夏令时会如何影响我的剧本,因为我知道我们在亚利桑那州有办公室,但他们不知道。我需要对脚本进行哪些更改以确保人员仍然正确路由?我想的是

如果日期介于3月11日和11月4日之间,请运行此…如果不是…请运行此


这有意义吗?或者我甚至需要担心这一点,当他们的时钟改变或不改变时,一切都会自行解决吗?

目前有一个非常强大的时区检测脚本。未统一的代码可在以下位置获得:

目前有一个非常健壮的时区检测脚本。未统一的代码可在以下位置获得:

我的日期扩展有识别DST的方法:

如果日期在本地DST内,则dateinstance.isDST()方法将返回“true”,否则返回“false”

但总的想法非常简单,而且令人毛骨悚然(因为这只是一个愚蠢的猜测)。基本上,无论何时使用DST(或类似方案),无论定义了什么开始和结束日期,1月1日之间的时区偏移量都不会与7月1日相同。添加一些代码来纪念南半球让每个人都倒退和犯错的事实(我是孩子!)一个确定任何特定日期(以及我的扩展中使用的日期)的简单函数是:

//isDST
//如果日期似乎在本地区的夏令时(或类似方案)内,则返回“true”;如果日期不在本地区的夏令时(或该地区似乎不遵守DST),则返回false。
Date.prototype.isDST=函数(){
//生成测试日期
var Jan1=新日期(this.getFullYear(),0);
var Jul1=新日期(this.getFullYear(),6);
//北半球的DST是“后退”
如果(Jan1.getTimezoneOffset()>Jul1.getTimezoneOffset()&&this.getTimezoneOffset()!=Jan1.getTimezoneOffset()){
返回true;
};
//南半球的DST“跃进”
如果(Jan1.getTimezoneOffset()
使用TZ数据库的解决方案更可靠,因为它们可以确定正在使用哪个时区,但在确定某个时间是否在DST中时往往同样不可靠(因为开始时间和结束时间的规则经常在变化)


出于您的需要,我认为上面的代码应该可以做到这一点。

我的日期扩展有识别DST的方法:

如果日期在本地DST内,则dateinstance.isDST()方法将返回“true”,否则返回“false”

但总的想法非常简单,而且令人毛骨悚然(因为这只是一个愚蠢的猜测)。基本上,无论何时使用DST(或类似方案),无论定义了什么开始和结束日期,1月1日之间的时区偏移量都不会与7月1日相同。添加一些代码来纪念南半球让每个人都倒退和犯错的事实(我是孩子!)一个确定任何特定日期(以及我的扩展中使用的日期)的简单函数是:

//isDST
//如果日期似乎在本地区的夏令时(或类似方案)内,则返回“true”;如果日期不在本地区的夏令时(或该地区似乎不遵守DST),则返回false。
Date.prototype.isDST=函数(){
//生成测试日期
var Jan1=新日期(this.getFullYear(),0);
var Jul1=新日期(this.getFullYear(),6);
//北半球的DST是“后退”
如果(Jan1.getTimezoneOffset()>Jul1.getTimezoneOffset()&&this.getTimezoneOffset()!=Jan1.getTimezoneOffset()){
返回true;
};
//南半球的DST“跃进”
如果(Jan1.getTimezoneOffset()
使用TZ数据库的解决方案更可靠,因为它们可以确定正在使用哪个时区,但在确定某个时间是否在DST中时往往同样不可靠(因为开始时间和结束时间的规则经常在变化)


为了满足您的需要,tho',我认为上面的代码应该可以做到这一点。

不确定上面的代码将如何帮助我。你是说我需要输入一个日期让DST开始工作,但日期每年都不同。这是一个月中的第一个星期天…那么…这是如何工作的呢?你必须有一个示例日期,上面的函数才能工作。该函数告诉您脚本运行区域中的日期(您喜欢的任何日期)是否在DST(或类似日期)范围内。在你的情况下,我假设它是当前日期。你只关心他们现在需要被送到哪里,对吗?不是明年?代码不需要确切地知道DST何时开始或结束——它所做的只是将当前日期与知道永远不存在DST的日期进行比较。如果日期相同,你在DST之外,如果日期不同,你在DST之内。不确定上面的代码对我有什么帮助。你是说我需要去看电影
        // isDST 
        // Returns "true" if the date appears to fall within the local area's Daylight Saving Time (or similar scheme), returns false if the date does not (or it appears that the region doesn't observe DST).
Date.prototype.isDST = function() { 

        // Generate test dates
    var Jan1 = new Date(this.getFullYear(), 0);
    var Jul1 = new Date(this.getFullYear(), 6);

        // DST in the Northern hemisphere is "fall back"
    if ( Jan1.getTimezoneOffset() > Jul1.getTimezoneOffset() && this.getTimezoneOffset() != Jan1.getTimezoneOffset() ){
        return true;
    };
        // DST in Southern hemisphere is "leap ahead"
    if ( Jan1.getTimezoneOffset() < Jul1.getTimezoneOffset() && this.getTimezoneOffset() != Jul1.getTimezoneOffset()){
        return true;
    };
        // We're not in DST 
    return false;
};