三、Date类型
Date
类型使用自UTC
(国际协调时间)1970
年1
月1
日午夜(零时)开始经过的毫秒数来保存日期。创建方式如下:
var now = new Date();
这种方式中,新创建的对象自动获得当前日期和时间。如果想根据特定的日期和时间创建日期对象,可以传入日期的毫秒数。为了简化这一过程,提供了两个方法Date.parse()、Date.UTC()
。
parse()
方法接收一个表示日期的字符串参数,然后尝试根据这个返回相应日期的毫秒数。但是没有定义此方法应该支持哪种日期格式,其行为因实现、地区而异,将地区设置为美国的浏览器通常都接受如下格式:
- “月/日/年”,如
6/13/2017
- “英文月名 日,年”,如
May 12,2017
- “英文星期几 英文月名 日 年 时:分:秒 时区”,如
Tue May 25 2017 00:00:00 GMT-0700
-
ISO 8601
扩展格式YYYY-MM-DDTHH:mm:ss:sssZ
(如2017-02-25T00:00:00
)。
如果传入的字符串不能表示日期,则返回NaN
。如果直接将表示日期的字符串传给Date
构造函数,也会在后台调用Date.parse()
方法,如:
var someDate = new Date(Date.parse("May 25, 2017"));
var date = new Date("May 25, 2017");
Date.UTC()
方法也是返回表示日期的毫秒数,但是和上面的方法不同,其参数分别是年份、基于零的月份(即零表示一月)、日(1
到31
)、小时数(0
到23
)、分钟、秒以及毫秒数。其中只有前两个参数是必须的。如果没有提供月中的天数(日),则假设为1
。如果省略其他参数,则都设置为零。如:
//GMT时间 2000年1月1日午夜零时
var y2k = new Date(Date.UTC(2000, 0));
//GMT时间2005年5月5日下午5:55:55
var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));
同样,如果传入的字符串本身就表示日期,则Date
构造函数会在后台调用Date.UTC()
方法,但是有一点不同的是,它会根据本地时区,而不是GMT
:
//本地时间 2000年1月1日午夜零时
var y2k = new Date(2000, 0);
//本地时间2005年5月5日下午5:55:55
var allFives = new Date(2005, 4, 5, 17, 55, 55);
JS
中还提供了Date.now()
方法返回表示调用这个方法的日期和时间的毫秒数。
var start = Date.now();
当然也可以使用加号把Date
对象转换成字符串,达到同样的目的:
var start = +new Date();
3.1 继承的方法
与其他引用类型一样,Date
类型也重写了toLocaleString()、toString()、valueOf()
方法,但是返回值和其他类型不同。Date
类型的toLocaleString()
方法会按照与浏览器设置的地区相适应的格式返回日期和时间。这大致意味着时间格式中会包含AM
或PM
,但不会包含时区信息(具体格式不定)。而toString()
方法则通常返回带有时区信息的日期和时间,其中时间一般以军用时间(即小时的范围是0
到23
)表示下面给出了在不同浏览器中调用toLocaleString()
和toString()
方法,输出PST
(太平洋标准时间)时间2007
年2
月1
日午夜零时的结果。
Firefox 3.5
toLocaleString() - Thursday, February 01, 2007 12:00:00 AM
toString() - Thu Feb 01 2007 00:00:00 GMT-0800 (PST)
Chrome 4
toLocaleString() - Thu Feb 01 2007 00:00:00 GMT-0800 (PST)
toString() - Thu Feb 01 2007 00:00:00 GMT-0800 (PST)
而Date
类型的valueOf()
方法,则根本不返回字符串,而是返回日期的毫秒表示。因此,可以方便使用比较操作符来比较日期值。
var date1 = new Date(2007, 0, 1);//"January 1, 2007"
var date2 = new Date(2007, 1, 1);//"Februay 1, 2007"
alert(date1 < date2);//true
3.2 日期格式化方法
Date
类型还有一些专门用于将日期格式化为字符串的方法,这些方法如下。
-
toDateString()
-以特定于实现的格式显示星期几、月、日和年 -
toTimeString()
-以特定于实现的格式显示时、分、秒和时区 -
toLocaleDateString()
-以特定于地区的格式显示星期几、月、日和年 -
toLocaleTimeString()
-以特定于实现的格式显示时、分、秒 -
toUTCString()
-以特定于实现的格式完整的UTC
日期。
当然,这些方法的结果因浏览器而异。
方法 | 描述 |
---|---|
Date() |
返回当日的日期和时间 |
getDate() |
从 Date 对象返回一个月中的某一天 (1 ~ 31) |
getDay() |
从 Date 对象返回一周中的某一天 (0 ~ 6 ) |
getMonth() |
从 Date 对象返回月份 (0 ~ 11 ) |
getFullYear() |
从 Date 对象以四位数字返回年份 |
getYear() |
请使用 getFullYear() 方法代替 |
getHours() |
返回 Date 对象的小时 (0 ~ 23 ) |
getMinutes() |
返回 Date 对象的分钟 (0 ~ 59 ) |
getSeconds() |
返回Date 对象的秒数 (0 ~ 59 ) |
getMilliseconds() |
返回 Date 对象的毫秒(0 ~ 999 ) |
getTime() |
返回 1970 年1 月 1 日至今的毫秒数 |
getTimezoneOffset() |
返回本地时间与格林威治标准时间 (GMT ) 的分钟差 |
getUTCDate() |
根据世界时从 Date 对象返回月中的一天 (1 ~ 31) |
getUTCDay() |
根据世界时从Date 对象返回周中的一天 (0 ~ 6) |
getUTCMonth() |
根据世界时从 Date 对象返回四位数的年份 |
getUTCHours() |
根据世界时返回 Date 对象的小时 (0 ~ 23) |
getUTCMinutes() |
根据世界时返回 Date 对象的分钟 (0 ~ 59 ) |
getUTCSeconds() |
根据世界时返回 Date 对象的秒钟 (0 ~ 59 ) |
getUTCMilliseconds() |
根据世界时返回 Date 对象的毫秒(0 ~ 999 ) |
parse() |
返回1970 年1 月1 日午夜到指定日期(字符串)的毫秒数。 |
setDate() |
设置 Date 对象中月的某一天 (1 ~ 31 ) |
setMonth() |
设置 Date 对象中月份 (0 ~ 11 ) |
setFullYear() |
设置 Date 对象中的年份(四位数字) |
setYear() |
请使用 setFullYear() 方法代替 |
setHours() |
设置 Date 对象中的小时 (0 ~ 23 ) |
setMinutes() |
设置 Date 对象中的分钟 (0 ~ 59 ) |
setSeconds() |
设置 Date 对象中的秒钟 (0 ~ 59 ) |
setMilliseconds() |
设置 Date 对象中的毫秒 (0 ~ 999 ) |
setTime() |
以毫秒设置 Date 对象。 |
setUTCDate() |
根据世界时设置 Date 对象中月份的一天 (1 ~ 31) |
setUTCMonth() |
根据世界时设置 Date 对象中的月份 (0 ~ 11 ) |
setUTCFullYear() |
根据世界时设置 Date 对象中的年份(四位数字) |
setUTCHours() |
根据世界时设置 Date 对象中的小时 (0 ~ 23 ) |
setUTCMinutes() |
根据世界时设置 Date 对象中的分钟 (0 ~ 59 ) |
setUTCSeconds() |
根据世界时设置 Date 对象中的秒钟 (0 ~ 59 ) |
setUTCMilliseconds() |
根据世界时设置 Date 对象中的毫秒 (0 ~ 999 ) |
toSource() |
返回该对象的源代码 |
toString() |
把 Date 对象转换为字符串 |
toTimeString() |
把 Date 对象的时间部分转换为字符串 |
toDateString() |
把 Date 对象的日期部分转换为字符串 |
toGMTString() |
请使用toUTCString() 方法代替 |
toUTCString() |
根据世界时,把 Date 对象转换为字符串 |
toLocaleString() |
根据本地时间格式,把 Date 对象转换为字符串 |
toLocaleTimeString() |
根据本地时间格式,把 Date 对象的时间部分转换为字符串 |
toLocaleDateString() |
根据本地时间格式,把 Date 对象的日期部分转换为字符串 |
UTC() |
根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数 |
valueOf() |
返回 Date 对象的原始值 |
未完待续。。。