普通函数的用法

Date对象可以作为普通函数直接调用,返回一个代表当前时间的字符串。

 

Date()

// "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"

注意,即使带有参数,Date作为普通函数使用时,返回的还是当前时间。

 

Date(2000, 1, 1)

// "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"

上面代码说明,无论有没有参数,直接调用Date总是返回当前时间。

构造函数的用法

Date还可以当作构造函数使用。对它使用new命令,会返回一个Date对象的实例。如果不加参数,实例代表的就是当前时间。

 

var today = new Date();

Date实例有一个独特的地方。其他对象求值的时候,都是默认调用.valueOf()方法,但是Date实例求值的时候,默认调用的是toString()方法。这导致对Date实例求值,返回的是一个字符串,代表该实例对应的时间。

 

var today = new Date();

 

today

// "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"

 

// 等同于

today.toString()

// "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"

上面代码中,today是Date的实例,直接求值等同于调用toString方法。

 

日期的运算

类型自动转换时,Date实例如果转为数值,则等于对应的毫秒数;如果转为字符串,则等于对应的日期字符串。所以,两个日期实例对象进行减法运算时,返回的是它们间隔的毫秒数;进行加法运算时,返回的是两个字符串连接而成的新字符串。

 

var d1 = new Date(2000, 2, 1);

var d2 = new Date(2000, 3, 1);

 

d2 - d1

// 2678400000

d2 + d1

// "Sat Apr 01 2000 00:00:00 GMT+0800 (CST)Wed Mar 01 2000 00:00:00 GMT+

 

静态方法

Date.now()

Date.now方法返回当前时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数,相当于 Unix 时间戳乘以1000。

 

Date.now() // 1364026285194

Date.parse()

Date.parse方法用来解析日期字符串,返回该时间距离时间零点(1970年1月1日 00:00:00)的毫秒数。

 

日期字符串应该符合 RFC 2822 和 ISO 8061 这两个标准,即YYYY-MM-DDTHH:mm:ss.sssZ格式,其中最后的Z表示时区。但是,其他格式也可以被解析,请看下面的例子。

 

Date.parse('Aug 9, 1995')

Date.parse('January 26, 2011 13:51:50')

Date.parse('Mon, 25 Dec 1995 13:30:00 GMT')

Date.parse('Mon, 25 Dec 1995 13:30:00 +0430')

Date.parse('2011-10-10')

Date.parse('2011-10-10T14:48:00')

上面的日期字符串都可以解析。

 

如果解析失败,返回NaN。

 

Date.parse('xxx') // NaN

 

 

Date.UTC()

Date.UTC方法接受年、月、日等变量作为参数,返回该时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数。

 

// 格式

Date.UTC(year, month[, date[, hrs[, min[, sec[, ms]]]]])

 

// 用法

Date.UTC(2011, 0, 1, 2, 3, 4, 567)

// 1293847384567

 

实例方法

Date.prototype.valueOf()

valueOf方法返回实例对象距离时间零点(1970年1月1日00:00:00 UTC)对应的毫秒数,该方法等同于getTime方法。

 

var d = new Date();

 

d.valueOf() // 1362790014817

d.getTime() // 1362790014817

 

Date.prototype.toString()

toString方法返回一个完整的日期字符串。

 

var d = new Date(2013, 0, 1);

 

d.toString()

// "Tue Jan 01 2013 00:00:00 GMT+0800 (CST)"

d

// "Tue Jan 01 2013 00:00:00 GMT+0800 (CST)"

因为toString是默认的调用方法,所以如果直接读取Date实例,就相当于调用这个方法。

 

Date.prototype.toUTCString()

toUTCString方法返回对应的 UTC 时间,也就是比北京时间晚8个小时。

 

var d = new Date(2013, 0, 1);

 

d.toUTCString()

// "Mon, 31 Dec 2012 16:00:00 GMT"

 

Date.prototype.toISOString()

toISOString方法返回对应时间的 ISO8601 写法。

 

var d = new Date(2013, 0, 1);

 

d.toISOString()

// "2012-12-31T16:00:00.000Z"

注意,toISOString方法返回的总是 UTC 时区的时间。

Date.prototype.toJSON()

 

toJSON方法返回一个符合 JSON 格式的 ISO 日期字符串,与toISOString方法的返回结果完全相同。

 

var d = new Date(2013, 0, 1);

 

d.toJSON()

// "2012-12-31T16:00:00.000Z"

 

 

Date.prototype.toDateString()

toDateString方法返回日期字符串(不含小时、分和秒)。

 

var d = new Date(2013, 0, 1);

d.toDateString() // "Tue Jan 01 2013"

 

Date.prototype.toTimeString()

toTimeString方法返回时间字符串(不含年月日)。

 

var d = new Date(2013, 0, 1);

d.toTimeString() // "00:00:00 GMT+0800 (CST)"

 

Date.prototype.toLocaleDateString()

toLocaleDateString方法返回一个字符串,代表日期的当地写法(不含小时、分和秒)。

 

var d = new Date(2013, 0, 1);

 

d.toLocaleDateString()

// 中文版浏览器为"2013年1月1日"

// 英文版浏览器为"1/1/2013"

 

Date.prototype.toLocaleTimeString()

toLocaleTimeString方法返回一个字符串,代表时间的当地写法(不含年月日)。

 

var d = new Date(2013, 0, 1);

 

d.toLocaleTimeString()

// 中文版浏览器为"上午12:00:00"

// 英文版浏览器为"12:00:00 AM"

 

get 类方法

Date对象提供了一系列get*方法,用来获取实例对象某个方面的值。

 

getTime():返回实例距离1970年1月1日00:00:00的毫秒数,等同于valueOf方法。

getDate():返回实例对象对应每个月的几号(从1开始)。

getDay():返回星期几,星期日为0,星期一为1,以此类推。

getYear():返回距离1900的年数。

getFullYear():返回四位的年份。

getMonth():返回月份(0表示1月,11表示12月)。

getHours():返回小时(0-23)。

getMilliseconds():返回毫秒(0-999)。

getMinutes():返回分钟(0-59)。

getSeconds():返回秒(0-59)。

getTimezoneOffset():返回当前时间与 UTC 的时区差异,以分钟表示,返回结果考虑到了夏令时因素。

 

var d = new Date('January 6, 2013');

 

d.getDate() // 6

d.getMonth() // 0

d.getYear() // 113

d.getFullYear() // 2013

d.getTimezoneOffset() // -480

 

 

Date对象还提供了这些方法对应的 UTC 版本,用来返回 UTC 时间。

 

getUTCDate()

getUTCFullYear()

getUTCMonth()

getUTCDay()

getUTCHours()

getUTCMinutes()

getUTCSeconds()

getUTCMilliseconds()

 

 

var d = new Date('January 6, 2013');

 

d.getDate() // 6

d.getUTCDate() // 5

 

 

 

 

set 类方法

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):设置毫秒时间戳。

 

 

var d = new Date ('January 6, 2013');

 

d // Sun Jan 06 2013 00:00:00 GMT+0800 (CST)

d.setDate(9) // 1357660800000

d // Wed Jan 09 2013 00:00:00 GMT+0800 (CST)

set*方法的参数都会自动折算。以setDate为例,如果参数超过当月的最大天数,则向下一个月顺延,如果参数是负数,表示从上个月的最后一天开始减去的天数。

 

var d1 = new Date('January 6, 2013');

 

d1.setDate(32) // 1359648000000

d1 // Fri Feb 01 2013 00:00:00 GMT+0800 (CST)

 

var d2 = new Date ('January 6, 2013');

 

d.setDate(-1) // 1356796800000

d // Sun Dec 30 2012 00:00:00 GMT+0800 (CST)

set类方法和get类方法,可以结合使用,得到相对时间。

 

var d = new Date();

 

// 将日期向后推1000天

d.setDate(d.getDate() + 1000);

// 将时间设为6小时后

d.setHours(d.getHours() + 6);

// 将年份设为去年

d.setFullYear(d.getFullYear() - 1);

 

 

set*系列方法除了setTime()和setYear(),都有对应的 UTC 版本,即设置 UTC 时区的时间。

 

setUTCDate()

setUTCFullYear()

setUTCHours()

setUTCMilliseconds()

setUTCMinutes()

setUTCMonth()

setUTCSeconds()

var d = new Date('January 6, 2013');

d.getUTCHours() // 16

d.setUTCHours(22) // 1357423200000

d // Sun Jan 06 2013 06:00:00 GMT+0800 (CST)

posted on 2018-02-24 11:02  Sharpest  阅读(151)  评论(0)    收藏  举报