Date对象是javascript提供的日期和时间的操作接口,可以表示的时间范围是1970年1月1日00:00:00
前后各1亿天(单位毫秒)。
Data函数
Date对象可以直接调用,返回一个代表当前时间的字符串(即使带有参数,也返回当前的时间)
1 | Date() |
注意:返回的是字符串
Data构造函数
Data当做构造函数使用,没有参数的时候,返回当前时间的对象。
1 | new Date(); |
注意:返回的是Date对象。
###1. new Date(millisconds)
Date对象接收毫秒数作为参数,意味着Unix时间戳作为参数时,必须将Unix时间戳乘以1000。
1 | new Date(24*60*60*1000); |
毫秒数表示的时间为1970年1月1日00:00:00 UTC开始计算的毫秒,如果需要表示1970年之前的时间,需要毫秒数为负数就可以了。
1 | new Date(-24*60*60*1000); |
###2. new Date(datestring)
Date对象接受日期字符串作为参数,返回对应的时间。日期字符串的完整格式为:“month day, year hours:minutes:seconds”,如果省略小时、分钟、秒数,这些值会被设为0。其他的日期字符串也可以被解析,所有可以被Date.parse()
方法解析的日期字符串,都可以当做Date对象的参数。
1 | new Date('2013-2-15'); |
对于YYYY-MM-DD
形式的字符串,JavaScript引擎可能会将其当做ISO格式来解析,采用格林尼治时区作为计时标准;而对于其他格式的日期字符串,一律视为非ISO格式,采用本地时区作为计时标准。
1 | new Date('2017-1-1'); |
###3. new Date(year, month[, day, hours, minutes, seconds, ms])
Date对象还可以接受多个整数作为参数,依次表示年、月、日、时、分、秒、毫秒。采用这种格式的时候,需要至少提供两个参数年和月,其他参数都是可选的,默认为0,因为如果传递单个整数,Date对象会解释为毫秒数。
1 | new Date(2017, 1, 1) |
注意:月份是从0开始计算,十二月对应11,但是天数是从1开始计算的,另外,除了日期默认为1,时分秒、毫秒都是默认为0的。如果参数超出了范围,就自动这算为下月的,负数的参数表示扣去的时间
Date对象静态方法
1. Date.now()
该方法返回当前时间的毫秒数
1 | Date.now(); |
###2. Date.parse()
用来解析日期字符串。返回毫秒数。无法解析时返回NaN
。
1 | Date.parse('2017/3/3') |
###3. Date.UTC()
返回UTC时间(世界标准时间),该方法接收年月日等变量作为参数,返回时间戳。
##Date实例对象的方法
1. to类方法
to类方法从Date对象返回一个字符串,表示指定的时间。
(1)Date.prototype.toString()
toString方法返回一个完整的日期字符串。
1 | var d = new Date(); |
注意:toString是默认的调用方法,所以如果直接读取Data对象的实例,就相当于调用这个方法。
####(2)Date.prototype.toUTCString()
toUTCString方法返回对应的UTC时间(国际标准时间),比北京时间少八小时。
1 | d.toUTCString(); |
####(3)Date.prototype.toISOString()
toISOString方法返回对应时间的ISO8601写法。该方法返回的时间总是UTC时区的时间。
1 | d.toISOString(); |
####(4)Date.prototype.toJSON()
toJSON方法返回一个符合JSON格式的ISO格式的日期字符串,与toISOString方法返回的结果完全相同。
1 | d.toJSON(); |
####(5)Date.prototype.toDateString()和Date.prototype.toTimeString()
toDateString方法返回日期字符串。toTimeString方法返回时间字符串。
1 | d.toDateString(); |
####(6)Date.prototype.toLocaleDateString()和Date.prototype.toLocaleTimeString()
toLocaleDateString方法返回一个代表日期的当地写法的字符串。
toLocaleTimeString方法返回一个代表时间的当地写法。
1 | d.toLocaleDateString(); |
###2.get类方法
Date对象提供了一系列get方法,用来获取实例对象的某个方面的值。
- getTime():返回Date实例的时间戳毫秒数,等同于valueOf
- getDate():返回实例对象对应的每个月几号(从1开始)
- getDay():返回星期几,星期日为0,星期一为1。
- getYear():返回距离1900的年数。
- getFullYear():返回四位数的年份。
- getMonth():返回月份(0表示1月,11表示12月)。
- getHour():返回小时(0-23)。
- getMilliseconds():返回毫秒(0-999)。
- getMinutes():返回分钟(0-59)。
- getSeconds():返回秒数(0-59)。
- getTimezoneOffset():返回当前时间与UTC的时区差异,以分钟表示,返回结果考虑到了夏令时因素。###3.set类方法
1
2
3
4
5
6
7
8
9
10
11
12d.getTime();
// 1503470410028
d.getDate();
// 23
d.getDay();
// 3
d.getYear();
// 117
d.getFullYear();
// 2017
d.getTimezoneOffset();
// -480
Date对象提供了一系列的set方法,用来设置实例对象的各个方面。 - setDate(date):设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。
- setYear(year): 设置距离1900年的年数。
- setFullYear(year [, month, date]):设置四位年份。
- setHours(hour [, min, sec, ms]):设置小时(0-23)。
- setMilliseconds():设置毫秒(0-999)。
- setMinutes(min [, sec, ms]):设置分钟(0-59)。
- setMonth(month [, date]):设置月份(0-11)。
- setSeconds(sec [, ms]):设置秒(0-59)。
- setTime(milliseconds):设置毫秒时间戳。
set方法基本是和get方法对应的,但是set方法没有setDay,因为星期几是计算出来的,不能设置。
注意:凡涉及到设置月份的,都是从0开始计算的,即0是1月,11是12月
实例
简单的获取特定格式的时间:
1 | function dateFormat(){ |