如何从Javascript获取DST的时区偏移量(不是客户端)? [重复]

This question already has an answer here:

My website have 3 clocks (NYC, Tokyo, London).

And I hard-code the offset (-5, 9, 0):

$('#nyc-clock').clock({offset: '-5', type: 'analog'});
$('#tokyo-clock').clock({offset: '9',  type: 'analog'});
$('#london-clock').clock({offset: '0', type: 'analog'});

However, for New York, the timezone will be changed due to "Daylight saving time"

Can I have a function to get timezone offset? Like this:

get_timezone_offset("NewYork");

or:

is_dst();

Thank you.

Update:

Finally, I found the answer using php from the search engine. If you are using php => 5.3, you should scrolling down for the best answer.

And I really cannot find Javascript's method.

http://blog.mynzsky.com/?p=243

<?php
    function is_dst($where) {
        $timezone=date('e');
        date_default_timezone_set($where);
        $dst=date("I");
        date_default_timezone_set($timezone);
        return $dst;
    }   

    if (is_dst('America/New_York')) {
        $nyc_timezone = -4;
    } else {
        $nyc_timezone = -5;
    }
?>
</div>
dsyrdwdbo47282676
dsyrdwdbo47282676 除非问题重新开放,否则我不能,但那可能是另一篇文章的重复。:)不用担心,很高兴我可以帮忙。
大约 7 年之前 回复
doxp30826
doxp30826 这就是我真正想要的!谢谢。不敢相信我在问题之前找不到其中一个......如果你发帖回答,那可能是最好的答案。
大约 7 年之前 回复
dqjgf0982
dqjgf0982 有人说JS没有解决方案吗?你跳到了PHP。下次,请不要将两个问题合二为一。实际上有五个不同的库可用于在纯JavaScript中执行此操作。我在这里描述它们。
大约 7 年之前 回复
dowy77780
dowy77780 是的,他的答案是最好的,但不能在我的托管服务器上工作。似乎没有可行的解决方案,所以我使用PHP代替。
大约 7 年之前 回复
dreamMyDream2014
dreamMyDream2014 嗨路易斯。您的功能是多余的,您不应该对时区偏移进行硬编码。用户2432106给出的答案最适合PHP。但答案在JavaScript中完全不同。你想要哪个?
大约 7 年之前 回复
dongnaoxia0927
dongnaoxia0927 没有重复,我没有得到客户的时区。我想得到NewYork的时区
大约 7 年之前 回复

2个回答



如果你想在PHP中计算它最简单的方法是将默认时区设置为UTC并从那里计算,但它会起作用 PHP 5.2 + </ p>

  date_default_timezone_set('UTC'); 
echo timezone_offset_get(new DateTimeZone('Asia / Tokyo'),new DateTime('now'));
</ code> </ pre>

它将以秒为单位返回偏移量。</ p>

即使DST也会返回正确的偏移量。</ p>
< / DIV>

展开原文

原文

If you like to calculate it in PHP the easiest is to set the default time zone to UTC and calculate from there, but it will work with PHP 5.2+

date_default_timezone_set('UTC');
echo timezone_offset_get(new DateTimeZone('Asia/Tokyo'),new DateTime('now'));

It will return the offset in seconds.

This will return correct offset even for DST.

dquoj04882
dquoj04882 我在我的本地服务器(Xampp)上测试它,它的工作。 所以我选择你的答案作为最佳答案。
大约 7 年之前 回复
douzhuan0309
douzhuan0309 “投票上/下需要15点声望”而我的代表= 1.这不是我。
大约 7 年之前 回复
dos3018
dos3018 自PHP 5.2起,DateTimeZone就出现了:php.net/releases/5_2_0.php。 你有没有要求PHP解决方案,然后我的答案,因为它不是JS?
大约 7 年之前 回复
duanjia4969
duanjia4969 谢谢,但由于未知原因,我的托管的PHP(5.3)不支持DateTimeZone对象。 所以我在寻找js。
大约 7 年之前 回复



在这样的javascript中</ p>

  javascript:alert(new Date('2013 /  06/24')。getTimezoneOffset())
</ code> </ pre>

返回UTC的时区偏移量</ p>
</ div>

展开原文

原文

in javascript like this

javascript:alert(new Date('2013/06/24').getTimezoneOffset())

Returns the time-zone offset from UTC

dongwen3093
dongwen3093 too long
大约 7 年之前 回复
duanci6484
duanci6484 480/60 = 8? 这是我的城市(香港)的时区。 正如我在我的问题“我的网站有3个时钟(纽约,东京,伦敦)”中描述的那样。
大约 7 年之前 回复
duang8642
duang8642 它在几分钟内除以60来获得时间..
大约 7 年之前 回复
dongzhan1383
dongzhan1383 再次感谢。 它为我返回-480。 但是我如何使用你的函数来确定纽约是-4还是-5?
大约 7 年之前 回复
duanbinmi8970
duanbinmi8970 这是因为日期格式..请点击这里jsfiddle.net/PHbfB
大约 7 年之前 回复
dongpenggan6812
dongpenggan6812 感谢您的回答。 但是,对于Chrome,它会警告“NaN”。
大约 7 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问