Date类型
一、相关概念
1.创建日期对象
Date
类型是在早起Java
中的java.util.Date
类基础上构建的。因此,Date
类型使用自UTC
(国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期
这种数据存储格式,Date
类型保存的日期能精确到1970年1月1日之前或之后的100000000年
创建一个日期对象,使用new
操作符和Date
构造函数
var now=new Date ();
2.Date.parse()
接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数
ECMA-262没有定义Date.parse()
应该支持那种日期格式,这个方法因实现而异,因地区而异
如果传入Date.parse()
方法的字符串不能表示日期,则会返回NaN
如果直接将表示日期的字符串传递给Date
构造函数,也会在后台调用Date.parse()
var someDate=new Date (Date .parse("May 25,2004" ));
var someDate=new Date ("May 25,2004" );
3.Date.UTC()
Date.UTC()
方法同样也返回表示日期的毫秒数,但它与Date.parse()在构建值时使用不同的信息
Date.UTC()
的参数分别是年份、基于0的月份(0到11)、月份中的哪一天(1到31)、小时数(0到23)、分钟、秒以及毫秒数
在这些参数中,只有前两个参数(年和月)是必须的
如果没有提供月中的天数,则假设天数为1;如果省略其他参数,全都假设为0
var y2k=new Date (Date .UTC(2000 ,0 ));
var allFives=new Date (Date .UTC(2005 ,4 ,5 ,17 ,55 ,55 ));
var y2k=new Date (2000 ,0 );
var allFives=new Date (2005 ,4 ,5 ,17 ,55 ,55 );
4.Date.now()
返回表示调用这个方法时的日期和时间的毫秒数
在不支持它的浏览器中,使用+
操作符获取Date
对象的时间戳,也可以达到同样的目的
var start= Date . now();
doSomething();
var stop= Date . now();
result= stop-start ;
var start=+ new Date ();
doSomething();
var stop=+ new Date ();
result= stop-start ;
5.日期格式
将地区设置为美国的浏览器通常接收下列日期格式
方式
“月/日/年”,如6/13/2004
“英文月名 日,年”,如January 12,2004
“英文星期几 英文月名 年 时:分:秒 时区”,如Tue May 25 2004 00:00:00 GMT-0700
ISO 8601 扩展格式 YYYY-MM-DDTHH:mm:ss.sssZ(例如 2004-05-25T00:00:00)。只有兼容ECMAScript 5的实现支持各种格式
二、继承的方法
1.相关概念
与其他引用类型一样,Date
类型也重新写了toLocaleString()
、toString()
和valueOf()
,但这些方法返回的值与其他类型的方法不同
Date
类型的toLocaleString()
方法会按照与浏览器设置的地区相应的格式返回日期和时间。这意味着时间格式会包含AM或PM,但不会包含时区信息(具体的格式会因浏览器而异)
toString()
则通常返回带有时区信息的日期和时间,其中一般以军用时间(0到23)表示
2.不同浏览器,输出PST(太平洋标准时间)的结果
Internet Explorer8
toLocaleString()
——Thursday,February 01,2007 12:00:00 AM
toString()
——Thu Feb 1:00:00:00 PST 2007
Firefox 3.5
toLocaleString()
——Thursday,February 01,2007 12:00:00 AM
toString()
——Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
Safari 4
toLocaleString()
——Thursday,February 01,2007 00:00:00
toString()
——Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
Chrome 4
toLocaleString()
——Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
toString()
——Thu Feb 01 2007 00:00:00 GMT-0800 (Pacific Standard Time)
Opera 10
toLocaleString()
——2/1/2007 12:00:00 AM
toString()
——Thu,01 Feb 2007 00:00:00 GMT-0800
3.Date类型的valueOf()
Date
类型的valueOf()
,不返回字符串,而是返回日期的毫秒表示。因此,可以方便使用比较操作符(小于或大于)来比较日期值
var date1=new Date (2007 ,0 ,1 );
var date2=new Date (2007 ,1 ,1 );
alert(date1<date2);
alert(date1>date2);
三、日期格式化方法
1.将日期转化为字符串的方法
toDateString()
——以特定于实现的格式显示星期几、月、日和年
toTimeString()
——以特定于实现的格式显示时、分、秒和时区
toLocaleDateString()
——以特定于地区的格式显示星期几、月、日和年
toLocaleTimeString()
——以特定于实现的格式显示时、分、秒
toUTCString()
——以特定与实现的格式完整的UTC日期
补充
与toLocaleString()
和toString()
方法一样,以上这些字符串格式方法的输出也因浏览器而异
还有一个toUTCString()
,其存在目的在于确保向后兼容
四、日期/时间组件方法
剩下为介绍的Date
类型的方法(下表),都是直接取得和设置日期值中特定部分的方法了
UTC
日期指的是在没有时区偏差的情况下(将日期转换为GMT
时间)的日期值
方法
说明
getTime()
返回表示日期的毫秒数;与valueOf()方法返回的值相同
setTime(毫秒)
以毫秒数设置日期,会改变整个日期
getFullYear()
取得4位数的年份(如2007而非仅07)
getUTCFullYear()
返回UTC日期的4位数年份
setFullYear(年)
设置日期的年份。传入的年份值必须是4位数字(如2007而非仅07)
setUTCFullYear(年)
设置UTC日期的年份。传入的年份值必须是4位数字(如2007而非仅07)
getMonth()
返回日期中的月份,其中0表示一月,11表示12月
getUTCMonth()
返回UTC日期中的月份,其中0表示一月,11表示12月
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(秒)
设置日期中的秒数。传入的值超过了59会增加秒数
setUTCSeconds(秒)
设置UTC日期中的秒数。传入的值超过了59会增加秒数
getMilliseconds()
返回日期中的毫秒数
getUTCMilliseconds()
返回UTC日期中的毫秒数
setMilliseconds(毫秒)
设置日期中的毫秒数
setUTCMilliseconds(毫秒)
设置UTC日期中的毫秒数
getTimezoneOffset()
返回本地时间与UTC时间相差的分钟数。例如,美国东部标准时间返回300。在某地进入夏令时的情况下,这个值才会有所变化