本文介绍了,js中日期对象的知识。包括日期对象的创建方式、日期对象的静态方法和日期对象的继承方法。
GMT时间、UTC时间和北京时间
GMT时间是指格林尼治标准时间,是格林尼治天文台通过天文学观测将每日太阳穿过本初子午线的瞬间定为正午时刻,并以此来制定时间,所以格林尼治标准时是“天文学时间”,随着科技的进步,人们发现该时间不够精确,因为地球自转的速度是不均衡的,而且自转速度也会越来越慢,所以不再使用。包括时区。
UTC时间是世界协调时间,是基于原子钟的。更加精确。
北京时间即,UTC+8。
构造函数
Date()直接调用
忽略传入的参数,返回一个字符串。
new Date()创建日期对象
new Date()参数可以是多种类型
1.不传参数1
var date = new Date(); // 获取的是系统时间对象
2.传一个数字1
var date = new Date(1528678434296); // 传入一个数字,即自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数。
3.传多个数字用逗号隔开
依次传入表示年月日时分秒毫秒的数字,中间用逗号隔开。注意除了日期其他参数的起始值都是0,当超出范围时会进行调整。1
var date = new Date(2018,5,32); // 返回Mon Jul 02 2018 00:00:00 GMT+0800 (中国标准时间)。注意和new Date(Date.UTC(2018,5,32)) 的区别,返回Mon Jul 02 2018 08:00:00 GMT+0800 (中国标准时间)。
4.传入字符串
多种形式,该字符串能被Date.parse()方法识别即可。1
2
3
4var date = new Date('June 11, 2018 08:24:00');
var date = new Date('2018-06-11'); // 返回 Mon Jun 11 2018 08:00:00 GMT+0800 (中国标准时间)
var date = new Date('2018-6-11'); // 返回 Mon Jun 11 2018 00:00:00 GMT+0800 (中国标准时间)
var date = new Date('06/11/2018'); // 返回 Mon Jun 11 2018 00:00:00 GMT+0800 (中国标准时间)
当参数是’年-月-日’形式时。有前置0时,相当于UTC时间。没有时,为本地时间。参照上面实例代码。
静态方法
Date.now()
返回自1970-1-1 00:00:00 UTC (世界标准时间)到现在经过的毫秒数。
不支持传递参数1
2
3
4
5Date.now()
+new Date()
(new Date()).valueOf() // 效率较高
(new Date()).getTime() // 效率较高
// 效果相同都是得到自1970-1-1 00:00:00 UTC (世界标准时间)到现在经过的毫秒数
Date.parse()
解析一个表示日期的字符串,并返回从1970-1-1 00:00:00 UTC (世界标准时间) 所经过的毫秒数。
如果无法识别时,返回NaN。
最好都是月日年 时间的格式。
1.接受日期字符串:’月/日/年’1
var date = Date.parse('6/13/2018');
2.接受日期字符串:’月 日,年’1
var date = Date.parse('January 12,2018');
3.接受表示时间的字符串:’星期 月 日 年 时:分:秒 时区’ ,如果没有指定时区时,默认使用本地时间。1
var date = Date.parse('Tue May 25 2004 00:00:00 GMT-0800');
4.接收日期字符串:YYYY-MM-DD。 有前置0,相当于UTC时间,否则相当于本地时间。1
2new Date('2018-06-11') //返回Mon Jun 11 2018 08:00:00 GMT+0800 (中国标准时间)
new Date('2018-6-11') // 返回Mon Jun 11 2018 00:00:00 GMT+0800 (中国标准时间)
5.,接收日期和时间:YYYY-MM-DDThh:mm:ss1
new Date('2018-06-10T14:48:00')
6.接收日期和时间:YYYY-MM-DDThh:mm:ss.sTZD如1
new Date('2018-06-16T19:20:30.45+01:00') // .45表示毫秒 +01:00表示偏移一个小时
Date.UTC()
返回从 1970-01-01 00:00:00 UTC 开始所经过的毫秒数。使用协调世界时代替本地时间。
接受参数。Date.UTC(year,month[,date[,hrs[,min[,sec[,ms]]]]])
如果指定参数超过合理范围,会调整其他参数来保证都在合理范围。如:Date.UTC(2017,12,32,08,24,30)
日期超过范围,月份+1,月份超过范围,年份+1,最终月份+2。1
new Date(Date.UTC(2017,12,32,08,24,30)) // 返回Thu Feb 01 2018 16:24:30 GMT+0800 (中国标准时间)
实例方法(继承自原型)
valueOf()
返回Date对象的原始值。从1970-01-01 00:00:00 UTC 开始到该日期所经过的毫秒数。
get类
getTime()
返回从从1970-01-01 00:00:00 UTC开始,到该日期对象所经过的毫秒数。
getDay()
根据本地时间返回,指定日期对象的星期中的第几天(从0开始)。(没有对应的set方法)
getFullYear()
根据本地时间返回,指定日期对象的年份。
getYear()
已废弃,使用getFullYear()
getMoth()
根据本地时间返回,指定日期对象的月份。
getDate()
根据本地时间返回,指定日期对象的月份的第几天(从1开始)。
getHours()
根据本地时间返回,指定日期对象的小时(从0开始)。
getMinutes()
根据本地时间返回,指定日期对象的分钟(从0开始)。
getSeconds()
根据本地时间返回,指定日期对象的秒数(从0开始)。
getMilliseconds()
根据本地时间返回,指定日期对象的毫秒数(从0开始)。
getTimezoneOffset()
返回,当前时区的时区偏移。
getUTCDay()
根据世界时(UTC时间)返回,指定日期对象的星期中的第几天(从0开始)。(没有对应的set方法)
getUTCFullYear()
根据世界时(UTC时间)返回,指定日期对象的年份。
getUTCMoth()
根据世界时(UTC时间)返回,指定日期对象的月份。
getUTCDate()
根据世界时(UTC时间)返回,指定日期对象的月份的第几天(从1开始)。
getUTCHours()
根据世界时(UTC时间)返回,指定日期对象的小时(从0开始)。
getUTCMinutes()
根据世界时(UTC时间)返回,指定日期对象的分钟(从0开始)。
getUTCSeconds()
根据世界时(UTC时间)返回,指定日期对象的秒数(从0开始)。
getUTCMilliseconds()
根据世界时(UTC时间)返回,指定日期对象的毫秒数(从0开始)。
set类
setTime()
以一个表示从1970-01-01 00:00:00 UTC开始的毫秒数来,为Date对象设置时间。
setFullYear()
根据本地时间,指定日期对象的年份。
setYear()
已废弃,使用setFullYear()
setMoth()
根据本地时间,指定日期对象的月份。
setDate()
根据本地时间,指定日期对象的月份的第几天(从1开始)。
setHours()
根据本地时间,指定日期对象的小时(从0开始)。
setMinutes()
根据本地时间,指定日期对象的分钟(从0开始)。
setSeconds()
根据本地时间,指定日期对象的秒数(从0开始)。
setMilliseconds()
根据本地时间,指定日期对象的毫秒数(从0开始)。
setUTCDay()
根据世界时(UTC时间),指定日期对象的星期中的第几天(从0开始)。(没有对应的set方法)
setUTCFullYear()
根据世界时(UTC时间),指定日期对象的年份。
setUTCMoth()
根据世界时(UTC时间),指定日期对象的月份。
setUTCDate()
根据世界时(UTC时间),指定日期对象的月份的第几天(从1开始)。
setUTCHours()
根据世界时(UTC时间),指定日期对象的小时(从0开始)。
setUTCMinutes()
根据世界时(UTC时间),指定日期对象的分钟(从0开始)。
setUTCSeconds()
根据世界时(UTC时间),指定日期对象的秒数(从0开始)。
setUTCMilliseconds()
根据世界时(UTC时间),指定日期对象的毫秒数(从0开始)。
to类(格式化方法)
toJSON()
返回一个符合JSON格式的日期字符串,与toISOString方法的返回结果完全相同.1
2var x = new Date();
x.toJSON(); // "2018-06-12T01:39:03.350Z" 时区总是UTC
toString()
将日期对象转为字符串。和Date()一样都是返回字符串。1
2
3var x = new Date();
x.toString(); // "Tue Jun 12 2018 09:39:03 GMT+0800 (中国标准时间)"
Date(); // 不接受参数返回表示当前时间的字符串
toTimeString()
将日期对象的时间部分转为字符串1
2var x = new Date();
x.toTimeString(); // "09:39:03 GMT+0800 (中国标准时间)"
toDateString()
将日期对象的日期部分转为字符串1
2var x = new Date();
x.toDateString(); // "Tue Jun 12 2018"
toGMTString()
已废弃
toUTCString()
将日期对象转为用UTC时区表示的字符串1
2var x = new Date();
x.toUTCString(); // "Tue, 12 Jun 2018 01:39:03 GMT"
toISOString()
将日期对象转为ISO格式的字符串1
2var x = new Date();
x.toISOString(); // "2018-06-12T01:39:03.350Z" 时区总是UTC
toLocaleString()
将日期对象转为字符串,根据本地规则格式化,因语言的不同而不同。1
2var x = new Date();
x.toLocaleString(); // "2018/6/12 上午9:39:03"
toLocaleDateString()
将日期对象的日期部分转为字符串,根据本地规则格式化,因语言的不同而不同。1
2var x = new Date();
x.toLocaleDateString(); // "2018/6/12"
toLocaleTimeString()
将日期对象的时间部分转为字符串,根据本地规则格式化,因语言的不同而不同。1
2var x = new Date();
x.toLocaleTimeString(); // "上午9:39:03"
toSource()/toLocaleFormat()
非标准的,不要使用。