javascript计时器什么时候关闭(三分钟科普夏令时)
最近项目上遇到了夏令时的问题,于是就对夏令时进行了分析研究,下面和大家一起分享一下,并在文章最后用Javascript代码来判断当前某一时区的某个特定时间是否属于夏令时。
什么是夏令时?
夏令时(Daylight Saving Time:DST),又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。
与夏令时(Daylight Saving Time:DST)相对的就是标准时间(Standard Time),在美国的表示方法,如东部标准时间(Eastern Standard Time;简写EST)。现在主要在下面的这些国家和地区实行。
-
北美的国家(如美国,加拿大)
-
欧盟所有国家
-
瑞士
-
俄罗斯
-
澳大利亚
-
新西兰
-
墨西哥
-
巴西
-
埃及
-
中东部份国家
-
其他国家和地区
在实施夏令时的国家或者地区,每年春天的3月份的第2个星期天到每年秋天的11月份的第1个星期天属于夏令时。
-
标准时间结束,进入夏令时
进入夏令时时,时钟往后拨一个小时,直接从1点变到3点,也就是说我们要比原来提前一个小时和美国佬开会。
夏令时和时区的关系?因为夏令时不是在世界上所有的国家都实行,因此,即使属于同一个时区的不同国家和地区,如果其中一个国家进入了夏令时,另外一个国家没有进入,这段夏令时时间段内,即使时区是一样的,但是其时间是不一样的。
下面的表格是笔者的测试结果:
序号 |
时区 |
是否应用了夏令时? |
1 |
UTC-9(Alaska) |
Y |
2 |
UTC-8(Canada&US) |
Y |
3 |
UTC-6 (Easter IsLand) |
N |
4 |
UTC-5 (Eastern Time (US&Canada)) |
Y |
5 |
UTC-5 (Indiana(East)) |
Y |
6 |
UTC-5 (Bogota, Lima, Quito, Rio Branco) |
N |
7 |
UTC-4 (Atlantic Time(Canada)) |
Y |
8 |
UTC-5 (Chetumal) |
N |
从上表可以看出,Bogota, Lima, Quito, Rio Branco等国家和地区,即使也是属于UTC-5,但是其就是不实行夏令时。
那笔者是如何测试出来的,其实很简单,打开你的操作系统,点击桌面右下方的时间管理,就可以自己调整时区和时间来测试了,如下图所示意,当笔者选择的时区为UTC-5(US&Canada)的时候,如果在2018年3月11日,强制把时间改成2018年3月11日,2:53:40 AM是改不成功的,因为,这个时间点在UTC-5(US&Canada)压根就不存在,是不是涨知识了?
为什么有夏令时?中国有吗?
Daylight Saving Time,翻译成中文就是,日光节约时间,最早是1895年新西兰推出的,主要是节省当时的用电量,一般在天亮早的夏季人为将时间提前一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。
夏时制”的核心理念,就是充分利用日光照明,减少用电,从而节约能源。夏天日照时间长,在不更改作息时间的前提下,把“时间”提前,可以早早地利用阳光。
其实在中国也实施过夏令时,1986年5月4日凌晨两点整,在西单的电报大楼,工作人员将顶楼报时钟的表针拨向了三点。同时,中央人民广播电台传出了报时:“北京时间,三点整。”,但是后来由于现实原因,没有继续实施,具体原因,请读者自行搜索度娘,笔者就不在赘述。
Javascript如何判断当前是否是夏令时?在Javascript有一个非常有用的时间对象,Date。
我们可以通过调用其方法getTimezoneOffset(),获得时区的偏移量(相对于GMT(标准时区)时间),其单位是分钟。
如果要换算成小时的偏移量,则需要除以60.
其偏移的量,在实施夏令时的国家和地区,在不同的月份返回值可能不是完全一样的。比如说,在一个实施夏令时的国家和地区,在每年的1月份和7月份,其时区偏移量返回值肯定是不一样的。
getTimezoneOffset() 方法将会返回相对标准时区的时间偏移量(单位为分钟),并符号取反。比如,GMT-5(US&Canada),在2018年的1月份, getTimezoneOffset()将会返回300而不是-300;在2018年的7月份,getTimezoneOffset()将会返回240.
jan.getTimezoneOffset() = 300
jul.getTimezoneOffset() = 240
当我们拿当前时间的当前时区偏移量和上面的1月份和7月份中的最大值进行比较,如果当前时区偏移量小于其最大值,我们认为当前就进入下了夏令时,是不是很神奇,学习知识和学习程序两不误。
读者如果感兴趣的话,可以把上图中的代码写到一个Javascript文件中,通过不断的调整你本机的时区和时间,然后在刷新浏览器,看是否会有夏令时的javascript消息框弹出。
读者如果遇到任何问题,请关注我的今日头条自媒体号,并在文章下面留言,我会尽可能第一时间回复大家。
【部分图片来源于网络,如果侵权,请与我联系删除】
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com