海拔5.3 Date类型

ECMAScript中的Date类型是在首Java中之java.util.Date类的底蕴及构建的.因此,Date类型使用自UTC(Coordinated
Universal Time)1970年1月1日零时起通过的毫秒数来保存日期.

倘若开创一个日子对象,使用new操作符和Date构造函数即可.

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

于调用Date构造函数而非传参的景况下,新创建的目标活动获取当前日子与时间.

倘想根据特定日期和岁月创造日期对象,必须传入表示该日期的毫秒数(从1970年1月1日零时届该日期经过的毫秒数).

为简化这过程,提供了一定量只法子:Date.parse()和Date.UTC().

从未概念Date.parse()应该支持啊种日期格式,这个艺术的所作所为为实现而异,因所在而异.

将地区安装为美国之浏览器通常还领下列日期格式:

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

“英文月名 日,年”,如January 12,2015;

“英文星期几 英文月名 日 年 时:分:秒 时区”,如Tue May 25 2015 00:00:00
GMT-0700.

譬如说,要也2015年5月25日创立一个日期对象,可以应用下代码:

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

日子对象及其于不同浏览器被的实现有那么些想不到之行为.例如产生一样种植是拿超出范围的价值替换成时之价,以便于生成输出.

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,以此类推),月被那无异上(1交31上),小时数(0到23),分钟,秒和毫秒数.

以这些参数里,只能前片个参数(年和月)是必备的.如果没有提供月吃的气数,则使天数也1,如果看略其他参数,则全假设为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(),但产生好几鲜明例外:日期和时还根据本地方如休GMT来创建.不了,Date构造函数接收的参数还和Date.UTC()相同.

故此,如果第一只参数是数值,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()就失,返回表示调用这个措施时之日子和时的毫秒数.

本条方式简化了动用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.3.1继承的法门

和其他引用类型一样,Date类型也再也写了toLocaleString(),toString()和valueOf()方法,但这些主意返回值与另外种类的丁之措施不同.

Date类型的toLocaleString()方法会按照同浏览器设置的地面竞相适应的格式返回日期与时间.

若果toString()方法则通常返回带有时区信息的日期和时,其中时间一般以军用时间(即小时的界定是0交23)表示.

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

自逻辑上说话,2015年1月1日使早为2015年2月1日,此时使我们说前者小于后者于符合常理.但是表示2015年1月1日底毫秒数仅次于代表2015年2月1日底毫秒值,因此在比两者大小时,第一只返回true,第二独返回false.

如此就是吧咱于日期提供了翻天覆地方便.

5.3.2日期格式化方法

Date类型还有部分专门用于将日期格式化为字符串的主意,这些办法如下

toDateString()  以一定于实现的格式显示星期几,月,日及年;

toTimeString()  以一定于贯彻之格式显示时,分,秒和时区;

toLocalDateString()  以特定于地方的格式显示星期几,月,日及年;

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

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

暨toLocaleString()和toString()方法同样,以上这些字符串格式方法的出口为是因浏览器而异的,因此尚未啦一个术会用来在用户界面被展示同一的日子信息.

5.3.3 日期/时间组件方法

别的Date类别的法子(如下表所示),都是直获取跟设置日期值中的特定的一些的方法.

要小心的是,UTC日期指的是在并未时区偏差的情况下(将日期变为GMT时间)的日期值.

方法 说明
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.在某地进入夏令时的情况下,这个值会有所变化