ECMAScript海拔伍.3 Date类型

ECMAScript中的Date类型是在初期Java中的java.util.Date类的底蕴上营造的.由此,Date类型使用自UTC(Coordinated
Universal Time)壹玖七零年十二月2十八日零时始于通过的阿秒数来保存日期.

要开创四个日期对象,使用new操作符和Date构造函数就能够.

var now=new Date();
    console.log(now);//输出类似Fri Nov 20 2015 13:44:07 GMT+0800(中国标准时间)

在调用Date构造函数而不传参的意况下,新创制的靶子活动获得当明天期和时间.

壹旦想依据特定日期和时间创建日期对象,必须传入表示该日期的微秒数(从一9七零年7月1二十一日零时至该日期经过的微秒数).

为了简化那么些历程,提供了多个方法:Date.parse()和Date.UTC().

未曾概念Date.parse()应该辅助哪一类日期格式,这几个方法的一举一动机原因完毕而异,因所在而异.

将地方安装为美利坚联邦合众国的浏览器常常都承受下路易斯维尔期格式:

“月/日/年”,如6/13/2015;

“英文月名 日,年”,如January 1二,20壹五;

“英文星期几 英文月名 日 年 时:分:秒 时区”,如Tue May 贰五 201伍 00:00:00
博来霉素T-0700.

例如,要为20一五年一月二二二十一日开立一个日子对象,能够采用上边代码:

var someDate=new Date(Date.parse("May 25,2015"));
    console.log(someDate);//Mon May 25 2015 00:00:00 GMT+0800 (中国标准时间)

日子对象及其在不相同浏览器中的达成有众多竟然的行为.例如有1种是将凌驾范围的值替换来当前的值,以便于生成输出.

var someDate1=new Date(Date.parse("May 32,2015"));
    alert(someDate1);//IE和FF会弹出Mon Jun 01 2015 00:00:00 GMT+0800,而Chrome,Opera,Safari会弹出Invalid Date

Date.UTC()方法一致也回到表示日期的飞秒数,但它与Date.parse()在创设值时选择差别的音信.

Date.UTC()的参数分别是年度,基于0的月度(四月是0,一月是1,由此及彼),月尾那一天(一到31天),小时数(0到二三),分钟,秒以及阿秒数.

在那些参数里,只好前多少个参数(年和月)是须求的.假如未有提供月初的天数,则只要天数为一,假如省略其余参数,则统统假如为0.

var y2k=new Date(Date.UTC(2000,0));//传入的值一个表示年,一个表示月份
    console.log(y2k);//Sat Jan 01 2000 08:00:00 GMT+0800 (中国标准时间)

    var allFives=new Date(Date.UTC(2015,4,5,17,55,55));//五月为4,小时下午5点写为17
    console.log(allFives);//Wed May 06 2015 01:55:55 GMT+0800 (中国标准时间)

有如模仿Date.parse()一样,Date构造函数也会效仿Date.UTC(),但有一点斐然不一致:日期和岁月都基于本地点而非博来霉素T来创立.可是,Date构造函数接收的参数仍旧与Date.UTC()同样.

就此,要是第3个参数是数值,Date()构造函数应付假设该值是日期中的年份,而第三个参数是月份,就那样类推.

故以前面五个例证也得以如下写:

var y2k=new Date(2000,0);
    console.log(y2k);//Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间)

    var allFives=new Date(2015,4,5,17,55,55);
    console.log(allFives);//Tue May 05 2015 17:55:55 GMT+0800 (中国标准时间)

如上代码创立了与前方例子一样的三个日子对象,只然则这一次的日期都以依照系统安装的本地时区成立的.

ECMAScript
5增添了Date.now()就去,重回表示调用那么些点龙时的日子和岁月的微秒数.

ECMAScript,其一艺术简化了利用Date对象分析代码的工作.

例如:

//取得开始时间
    var start=Date.now();

    //调用函数
    doSomething();

    //取得停止时间
    var stop=Date.now();
        result=stop-start;

在不帮助Date.now()的浏览器中,使用+操作符把Date对象调换到字符串,也得以高达同等的指标.

//取得开始时间
    var start=+Date.now();

    //调用函数
    doSomething();

    //取得停止时间
    var stop=+Date.now();
        result=stop-start;

5.三.一承继的办法

与别的引用类型同样,Date类型也重写了toLocaleString(),toString()和valueOf()方法,但那一个方法重返值与其余类别的中的方法分歧.

Date类型的toLocaleString()方法会依照与浏览器设置的地段相适应的格式重返日期和时间.

而toString()方法则1般重回带有时区新闻的日子和岁月,当中时间一般以军用时间(即小时的限制是0到二叁)表示.

toLocaleString()和toString()几种办法在不再的浏览器再次回到的日期和时间格式大区别,事实上,它们的异样也仅在调试代码时相比有用,而在展现日期和岁月时髦未怎么价值.

关于Date类型的valueOf()方法,则根本不回去字符串,而是重临日期的皮秒表示.因而,能够方便使用比较操作符来比较日期值.

var date1=new Date(2015,0,1);
    var date2=new Date(2015,1,1);

    console.log(date1<date2);//true
    console.log(date1>date2);//false

从逻辑上讲,20一伍年一月二十八日要早于2015年3月二二十五日,此时若是我们说前者小于后者相比吻合常理.不过表示201五年七月2日的微秒数稍低于表示20一5年3月2二3日的微秒值,由此在可比两者大时辰,第二个重回true,第一个再次来到false.

如此那般就为大家比较日期提供了大幅方便.

伍.三.1日期格式化方法

Date类型还有1部分越发用于将日期格式化为字符串的章程,这几个办法如下

toDateString()  以特定于贯彻的格式呈现星期几,月,日和年;

toTimeString()  以特定于达成的格式展现时,分,秒和时区;

toLocalDateString()  以特定于地点的格式展现星期几,月,日和年;

toLocalTimeString()  以一定于贯彻的格式展现时,分,秒;

toUTCString()   以特定于贯彻的格式完整的UTC日期.

与toLocaleString()和toString()方法壹致,以上这几个字符串格式方法的输出也是因浏览器而异的,由此未有哪1个措施能够用来在用户分界面中显示同一的日期消息.

5.三.3 日期/时间组件方法

其它的Date类其他点子(如下表所示),都以直接拿到和装置日期值中的特定的一部分的方法.

亟待注意的是,UTC日恒生期货指数的是在一向不时区偏差的地方下(将日期转换为欧霉素T时间)的日期值.

方法 说明
getTime() 返回表示日期的毫秒数;与valueOf()方法返回的值相同
setTime(毫秒) 以毫秒数设置日期,会改变整个日期
getFullYear() 取得4位数的年份
getUTCFullYear() 返回UTC日期的4位数年份
setFullYear(年) 设置日期的年份.传入的年份值必须是4位数字
setUTCFullYear(年) 设置UTC日期的年份.传入的年份值必须是4位数字
getMonth() 返回日期中的月份,其中0表示1月,11表示十二月
getUTCMonth() 返回UTC日期中的月份,其中0表示1月,11表示十二月
setMonth(月) 设置日期中的月份,传入的值必须大于0,超过11则增加年份
setUTCMonth(月) 设置UTC日期中的月份,传入的值必须大于0,超过11则增加年份
getDate() 返回日期月份中的天数(1~31)
getUTCDate() 返回UTC日期月份中的天数(1~31)
setDate(日) 设置日期月份中的天数.如果传入的值超过了该月中就应有的天数,则增加月份
setUTCDate(日) 设置UTC日期月份中的天数.如果传入的值超过了该月中就应有的天数,则增加月份
getDay() 返回日期中星期的星期几(其中0表示星期在日,6表示星期六)
getUTCDay() 返回UTC日期中星期的星期几(其中0表示星期在日,6表示星期六)
getHours() 返回日期中的小时数(0到23)
getUTCHours() 返回UTC日期中的小时数(0到23)
setHours(时) 设置日期中的小时数.传入值超过了23则增加月份中的天数
setUTCHours(时) 设置UTC日期中的小时数.传入值超过了23则增加月份中的天数
getMinutes() 返回日期中的分钟数(0到59)
getUTCMinutes() 返回UTC日期中的分钟数(0到59)
setMinutes(分) 设置日期中的分钟数.传入的值超过59则增加小时数
setUTCMinutes(分) 设置UTC日期中的分钟数.传入的值超过59则增加小时数
getSeconds() 返回日期中的秒数(0到59)
getUTCSeconds() 返回UTC日期中的秒数(0到59)
setSeconds(秒) 设置日期中的秒数(0到59)
setUTCSeconds(秒) 设置UTC日期中的秒数(0到59)
getMilliseconds() 返回日期中的毫秒数
getUTCMilliseconds() 返回UTC日期中的毫秒数
setMilliseconds(毫秒) 设置日期中的毫秒数
setUTCMilliseconds(毫秒) 设置UTC日期中的毫秒数
getTimezoneOffset() 返回本地时间与UTC时间相差的分钟数.例如,美国东部标准时间返回300.在某地进入夏令时的情况下,这个值会有所变化