日常搬砖过程中,凡事使用到Date总是一知半解,每次都要查阅资料,今天有时间把这里整理一下,希望今天储备的知识,够以后使用就不用查阅资料了哈,现在开始吧
- new Date()
使用它可以创建一个日期实例,并返回代表当前时间的字符串
接收参数有5种形式
-
无参数,新创建的 Date 对象代表当前的日期和时间
-
时间戳值,例如: new Date(1715136443087)
-
日期字符串 new Date(“December 17, 1995 03:24:00”); // 不被鼓励,可能不会在所有运行时环境 new Date(“1995-12-17T03:24:00”); // 这是符合 ISO-8601 标准的,将可靠地工作
-
日期对象 一个现有的 Date 对象。这实际上是在现有的 Date 对象上复制了一个相同的日期和时间。
-
日期和时间组件的单独值, new Date(year, monthIndex, day, hours, minutes, seconds, milliseconds) 例如: new Date(2020, 5, 19, 25, 65) 将返回 2020 年 6 月 20 日凌晨 2:05。
以上都可生成一个日期对象,但有时我们也会遇到只有一个Date(),这种形式,我们分别打印一下返回值,发现Date()生成的是一个类时间对象的字符串,区别要记牢.
- 如何获取时间戳
- 获取当前的时间戳
Date.now()
- valueOf: 该方法返回日期的毫秒表示,可以方便时间的比较,该方法返回的毫秒数精确到毫秒。
new Date().valueOf()
- Number: 返回表示日期的毫秒数,与valueOf()返回的值相同,也精确到毫秒数。
Number(new Date())
- getTime: 返回表示日期的毫秒数,与valueOf()返回的值相同,也精确到毫秒数。
new Date().getTime()
- Date.parse: 该方法接受一个表示日期的字符串参数,然后尝试根据这个日期返回日期的毫秒数。ECMA-262没有定义该方法支持哪种日期格式,因此这个方法的行为因为浏览器实现而异。如果传入字符串不能表示日期,那么它会返回NaN。该方法返回的毫秒值后三位全为0,精确到秒数,没有毫秒数。
Date.parse(date)
- 根据时间对象获取指定时间
let date = new Date()
返回该日期对象的字符串,该字符串格式因不同语言而不同
date.toLocaleString() // '2024/5/8 11:21:56'
返回指定日期对象日期部分的字符串,该字符串格式因不同语言而不同
date.toLocaleDateString() // '2024/5/8'
返回日期对象对应的年、月、日、时、分、秒、毫秒、星期几
date.getFullYear() // 2024
date.getMonth() // 4
date.getDate() // 8 日期
date.getDay() // 3 星期
date.getHours() // 11
date.getMinutes() // 21
date.getSeconds() // 56
date.getMilliseconds() //217
- 时间处理的几个方法
获取两个时间相差多少天
function betweenDate(date1, date2){let oneDay = 1000*60*60*24return Math.round((date1-date2)/oneDay)
}let date1 = new Date('2024-05-08')
let date2 = new Date('2024-04-08')
betweenDate(date1, date2) // 30
格式化指定的时间
function getDateTime(date, format){const map = {YY: date.getFullYear(),MM: date.getMonth()+1,DD: date.getDate(),HH: date.getHours(),mm: date.getMinutes(),ss: date.getSeconds()}return format.replace(/YY|MM|DD|HH|mm|ss/g, key => {return ('0' + map[key]).slice(-2)})
}
let now = new Date()
getDateTime(now, 'YY-MM-DD HH:mm:ss') //'24-05-08 15:55:34'