javascript来判断某个时间是不是处于夏令时

JavaScript08

javascript来判断某个时间是不是处于夏令时,第1张

可以通过时间戳来判断,夏令时的开始和结束的两个时间戳。在开始和结束之间就是夏令时。例子:

//设今年的夏令时开始是2017-5-1 0:0:0至2017-9-1 0:0:0,那就能得到时间戳

var st = new Date( "2017-5-1 0:0:0" ).getTime()

var et = new Date( "2017-9-1 0:0:0" ).getTime()

var now = new Date().getTime()

if( now > st && now < et ) {

    console.log( "是夏令时" )

} else {

    console.log( "不是夏令时" )

}

一直被各种时间格式困扰,所以这次来总结一下常用的时间格式到底有哪些,它们之间如何互相转换。

ISO Date "2015-03-25" 国际标准

Short Date"03/25/2015"

Long Date "Mar 25 2015" 或者 "25 Mar 2015"

Full Date "Wednesday March 25 2015"

new Date()方法可以将前四种时间格式当做参数,输出 UTC 格式的时间

UTC "2015-03-25T12:00:00" 看到日期和时间中间有一个字母 T 表示为 UTC 时间 是 现在使用的标准时间

UTC 是时间标准;ISO-8601 是表示时间的一种标准格式

ISO-8601 的具体日期的时间表示法,在 UTC 时间后加 Z,如 "2015-03-25T12:00:00Z",Z 表示是通用标准,其它的时区的时间和 UTC 不同,所以用实际时间加时差表示。

GMT Greenwich Mean Time "Mon Feb 13 08:00:00 GMT+08:00 2012" 中间有 GMT+ 字样

UTC(Universal Time Coordinated 原子钟提供)和 GMT (Greenwich Mean Time 格林尼治时间)一样

EDT (US)Eastern Daylight Time 东部夏令时

CDT (US) Central Daylight Time 中部夏令时

MDT (US)Mountain Daylight Time 山地夏令时

PDT (US) Pacific Daylight Time 太平洋夏令时

EST (US) Eastern Standard Time 东部标准时间

CST"Web Mar 25 2015 08:00:00 GMT+0800" 中部标准时间

MST (US) Mountain Standard Time 山地标准时间

PST (US) Pacific Standard Time 太平洋标准时间

设置时间时,没有指定 time zone,js 将会使用浏览器的 time zone

获取时间时,没有指定 time zone,结果将会转换成浏览器的 time zone

总之,如果时间是用 GMT 时间创建,如果浏览器 from central US 时间将会被转换成 CDT。

涉及到格式类型:UTC,GMT,unix timestamp

经常混淆于此,特地研究了一下,记录在此以备忘。整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,UniversalTimeCoordinated)。UTC与格林尼治平均时(GMT,GreenwichMeanTime)一样,都与英国伦敦的本地时相同。在本文中,UTC与GMT含义完全相同。北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800。如果在电子邮件的信头中有这么一行:Date:Fri,08Nov200209:42:22+0800说明信件的发送地的地方时间是二○○二年十一月八号,星期五,早上九点四十二分(二十二秒),这个地方的本地时领先UTC八个小时(+0800,就是东八区时间)。电子邮件信头的Date域使用二十四小时的时钟,而不使用AM和PM来标记上下午。以这个电子邮件的发送时间为例,如果要把这个时间转化为UTC,可以使用一下公式:UTC+时区差=本地时间时区差东为正,西为负。在此,把东八区时区差记为+0800,UTC+(+0800)=本地(北京)时间(1)那么,UTC=本地时间(北京时间))-0800(2)0942-0800=0142即UTC是当天凌晨一点四十二分二十二秒。如果结果是负数就意味着是UTC前一天,把这个负数加上2400就是UTC在前一天的时间。例如,本地(北京)时间是0432(凌晨四点三十二分),那么,UTC就是0432-0800=-0368,负号意味着是前一天,-0368+2400=2032,既前一天的晚上八点三十二分。纽约的时区是西五区,比UTC落后五个小时,记为-0500:UTC+(-0500)=纽约时间(3)UTC=纽约时间+0500(4)把(2)式-(4)式相比较,UTC=北京时间-0800=纽约时间+0500(5)即北京时间=纽约时间+1300(6)即北京时间领先纽约时间十三个小时,由(6)式,纽约时间=北京时间-1300(7)在四月下旬,纽约又换用夏令时,又称为日光节约时,比标准纽约时间提前一个小时,实际成为西四区的标准时间,成为-0400。UTC+(-0400)=纽约夏令时,套用以上公式,北京时间=纽约夏令时+1200纽约夏令时=北京时间-1200在这些转换中,最重要的公式就是UTC+时区差=本地时间时区差东为正,西为负。例如,东八区(北京)是+0800,西五区(纽约)是-0500,加州是西八区,是-0800,美国中部时区是西六区,-0600,美国山地时区是西七区,-0700,太平洋时区是西八区,-0800,在夏天使用夏时制,成为-0700。德国时区是东一区,+0100,夏天变为+0200。多数电子邮件程序,例如OutlookExpress,在显示时间时,计算机程序把时间先转换成为本地时间再显示,例如,邮件的Date域为:Date:Fri,08Nov200209:42:22+0800