获取一个时间我们使用构造器加Date来获取,直接使用new Date()是获取当前的时间
new Date(milliseconds)
当只有一个参数的时候,会把参数转为数字数,会转成整数,如果传的是小数的话会截取小数点前面的整数值。传的数值代表以1970:8:00:00(中国时区)为基准,往后的毫秒数。可以接受复数,代表基准时间往前若干毫秒的时间。代码表达更清楚。另外值得一提的是Infinity也是数字类型,但是传进去会返回一个无效时间
new Date() //Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间)
new Date(Infinity)//Invalid Date(无效的时间)
new Date(-100) //Thu Jan 01 1970 07:59:59 GMT+0800 (中国标准时间)
new Date(-1000*3600*24) //Wed Dec 31 1969 08:00:00 GMT+0800 (中国标准时间)
console.log(new Date(10000.999))//Thu Jan 01 1970 08:00:10 GMT+0800 (中国标准时间)
new Date(year, month, date, hours, minutes, seconds, ms)
如果有多个参数会认为是再查询某一年的某一天的日期
year 应该是四位数。为了兼容性,也接受 2 位数,并将其视为 19xx,例如 98 与 1998 相同,但强烈建议始终使用 4 位数。
month 计数从 0(一月)开始,到 11(十二月)结束。
date 是当月的具体某一天,如果缺失,则为默认值 1。
如果 hours/minutes/seconds/ms 缺失,则均为默认值 0。
console.log(new Date(2011,1,12,8))//Sat Feb 12 2011 08:00:00 GMT+0800 (中国标准时间)
获取时间相关组件
getTime()
使用getTime方法获取从1970年至今的毫秒数,或者说时间戳。
let time = new Date()
console.log(time.getTime()) //1705400144192
还有一种方法可以获取到当前时间戳。Date.now()
console.log(Date.now()) //1705400144192
getFullYear()
获取年份(4位数),当然有人也用getYear来获取,这是不对的,尽量,千万记得要用getFullYear
getMonth()
获取月份,是从0-11的,不是我们常用的1-12月
getDate()
获取具体的日期,1-31。跟月份不同按照正常的月份日期返回的
getHours(),getMinutes(),getSeconds(),getMilliseconds()
获取相应的时间组件。
getDay()
获取周几
设置时间相关组件
setFullYear(year, [month], [date])
设置年月日,
setMonth(month, [date])
设置月日
setDate(date)
设置日期
setHours(hour, [min], [sec], [ms])
设置时分秒毫秒
setMinutes(min, [sec], [ms])
设置分秒毫秒
setSeconds(sec, [ms])
设置秒毫秒
setMilliseconds(ms)
设置毫秒
setTime(milliseconds)
设置当前日期时间戳
Date.parse(str)方法可以从一个字符串中读取到时间戳
字符串的格式应该为:
YYYY-MM-DDTHH:mm:ss.sssZ,
其中: YYYY-MM-DD
日期:年-月-日。 字符 "T" 是一个分隔符。
HH:mm:ss.sss
时间:小时,分钟,秒,毫秒。
可选字符 'Z' 为 +-hh:mm 格式的时区。单个字符 Z 代表 UTC+0 时区。
console.log(Date.parse('2011-12-30T08:10:10'))//1325203810000
console.log(Date.parse('2011-12-30'))//1325203200000