Date 对象
1. 构造函数
允许多种参数(以国际标准时间(UTC)1970年1月1日00:00:00作为时间的零点):
// 参数为时间零点开始计算的毫秒数
new Date(1378218728000) // Tue Sep 03 2013 22:32:08 GMT+0800 (CST)
// 参数为日期字符串 - 只要是能被Date.parse()方法解析
new Date('2013-2-15')
new Date('2013/2/15')
new Date('02/15/2013')
new Date('2013-FEB-15')
new Date('FEB, 15, 2013')
new Date('FEB 15, 2013')
new Date('February, 15, 2013')
new Date('February 15, 2013')
new Date('15 Feb 2013')
new Date('15, February, 2013')
// Fri Feb 15 2013 00:00:00 GMT+0800 (CST)
// 参数为多个整数,代表年、月、日、小时、分钟、秒、毫秒
new Date(2013, 0, 1, 0, 0, 0, 0)
// Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
// 参数为负整数,代表1970年元旦之前的时间
new Date(-1378218728000)
// Fri Apr 30 1926 17:27:52 GMT+0800 (CST)
2. 静态方法
// Date.now() - 返回当前时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数
Date.now() // 1364026285194
// Date.parse() - 解析日期字符串,返回该时间距离时间零点(1970年1月1日 00:00:00)的毫秒数
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')
Date.parse('xxx') // NaN
// Date.UTC() - 接受年、月、日等作为参数,返回该时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数。
// 格式:(year, month[, date[, hrs[, min[, sec[, ms]]]]])
Date.UTC(2011, 0, 1, 2, 3, 4, 567) // 1293847384567
3. 实例方法
to 类 - 从 Date 对象返回一个字符串,表示指定的时间。
const d = new Date(2013, 0, 1);
// Data.toString() - 返回一个完整的日期字符串
d.toString() // "Tue Jan 01 2013 00:00:00 GMT+0800 (CST)"
// Data.toUTCString() - 返回对应的 UTC 时间(比北京晚8个小时)
d.toUTCString() // "Mon, 31 Dec 2012 16:00:00 GMT"
// Date.toISOString() - 返回对应时间的 ISO8601 写法,注意也为UTC时区
d.toISOString() // "2012-12-31T16:00:00.000Z"
// Date.toJSON() - 返回一个符合 JSON 格式的 ISO 日期字符串
d.toJSON() // "2012-12-31T16:00:00.000Z"
// Data.toDateString() - 返回日期字符串(不含小时、分和秒)
d.toDateString() // "Tue Jan 01 2013"
// Date.prototype.toTimeString() - 返回时间字符串(不含年月日)
d.toTimeString() // "00:00:00 GMT+0800 (CST)"
get 类 - 获取 Date 对象的日期和时间,返回的为当前时区的。
getTime()
:返回实例距离1970年1月1日00:00:00的毫秒数,等同于valueOf
方法getDate()
:返回实例对象对应每个月的几号(从1开始)。getDay()
:返回星期几,星期日为0,星期一为1,以此类推。getFullYear()
:返回四位的年份。getMonth()
:返回月份(0表示1月,11表示12月)。getHours()
:返回小时(0-23)。getMilliseconds()
:返回毫秒(0-999)。getMinutes()
:返回分钟(0-59)。getSeconds()
:返回秒(0-59)。getTimezoneOffset()
:返回当前时间与 UTC 的时区差异,以分钟表示,返回结果考虑到了夏令时因素。
getDate() 区别于其他,日期是从 1 开始的,其他都是 0 开始;另外不要搞混 getDate() 和 getDay(),一个日期一个星期。
set 类 - 设置 Date 对象的日期和时间,设置当前时区的时间。
setDate(date)
:设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。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)
:设置毫秒时间戳。
4. 常用功能
4.1 时间显示
function formatter(date){
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hours = date.getHours()
const minutes = date.getMinutes()
const seconds = date.getSeconds()
console.log(`当前时间:${year}-${month}-${day} ${hours}:${minutes}:${seconds}`)
}
function nowTime () {
formatter(new Date())
setInterval(()=>{
formatter(new Date())
}, 1000)
}
nowTime()
4.2 倒计时显示
function formatter(futureTime, timer){
const nowTime = new Date()
const timeSum = futureTime.getTime() - nowTime.getTime()
let day = parseInt(timeSum / 1000 / 60 / 60 / 24) // 天
let hour = parseInt((timeSum / 1000 / 60 / 60) % 24) // 时
let minute = parseInt((timeSum / 1000 / 60) % 60) // 分
let second = parseInt((timeSum / 1000) % 60) // 秒
// 细节处理:所有的时间小于10的时候,在前面自动补0
day = day < 10 ? '0' + day : day
hour = hour < 10 ? '0' + hour : hour
minute = minute < 10 ? '0' + minute : minute
second = second < 10 ? '0' + second : second
// 兜底处理
if (timeSum < 0) {
console.log('距离XXX还有00天00小时00分00秒')
clearInterval(timer)
return false
}
console.log(`距离XXX还有${day}天${hour}小时${minute}分${second}秒`)
}
function countDown () {
const futureTime = new Date('2096/06/23 21:00:00')
const timer = setInterval(()=>{
formatter(futureTime, timer)
}, 1000)
}
countDown()
最后更新于
这有帮助吗?