1、简介JavaScript 提供了内置对象 Date.now() // 1593002422045 返回自 Unix Zero Time 以来,到代码运行时刻的时间戳。 2、创建时间对象创建一个新的
2.1、无参数调用无参数构造函数,返回代码执行时刻的时间。 let now = new Date() // Wed Jun 24 2020 20:54:21 GMT+0800 (中国标准时间) 2.2、Unix 时间戳作为参数值提供 // 当前时间 let now = new Date() // Wed Jun 24 2020 20:59:39 GMT+0800 (中国标准时间) // 两小时以后的时间 let later = new Date(now.getTime() + 2 * 60 * 60 * 1000) // Wed Jun 24 2020 22:59:39 GMT+0800 (中国标准时间) 2.3、日期字符串该字符串必须符合 IETF-compliant RFC 2822 timestamps 或 version of ISO8601 格式。 // 提供 ISO8601 格式的日期字符串 new Date('2020-06-24T16:06:26.860Z') // Thu Jun 25 2020 00:06:26 GMT+0800 (中国标准时间) // 提供 RFC 2822 格式的日期字符串 new Date('24 Jun 2020 16:06:26 GMT') // Thu Jun 25 2020 00:06:26 GMT+0800 (中国标准时间) new Date('Wed, 24 Jun 2020 16:06:26 GMT') // Thu Jun 25 2020 00:06:26 GMT+0800 (中国标准时间)
2.4、分别提供日期成员语法:
最少提供 你可能期望仅提供一个参数 new Date(2000) // Thu Jan 01 1970 08:00:02 GMT+0800 (中国标准时间) 下面我们来创建一个 // 1月份以 0 开始的 new Date(2000, 0, 1) // Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间) 实际上,以上时间并非 如果想要转换为 注意:默认创建的对象是表示本地时间的,而非 UTC 时间。因此,以上代表的时间只是北京时间到了世纪之初,而非世界时已经进入了新世纪,因为我们在东八区,比 UTC 时间晚 8 个小时。 let millis = Date.UTC(2000, 0, 1) // 这才真正的21世纪第一天 new Date(millis) // Sat Jan 01 2000 08:00:00 GMT+0800 (中国标准时间) 如果参数超出合理范围,会自动进位。 new Date(2000, 0, 1) // Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间) // 月份超出了 11,多了 1 个月,进位到下一年的 1 月。 new Date(2000, 12, 1) // Mon Jan 01 2001 00:00:00 GMT+0800 (中国标准时间) // 日期超出了 1 月 的最大值 31,多了 1 天,进位为 2 月 1 日 new Date(2000,0, 32) // Tue Feb 01 2000 00:00:00 GMT+0800 (中国标准时间) // 日期超出的天数可以跨多个月 new Date(2000, 0, 60) // Tue Feb 29 2000 00:00:00 GMT+0800 (中国标准时间) // 碰到跨 2 月时,还可以自动处理闰月的天数问题 // 2000 年 2 月是 29 天 new Date(2000, 0, 61) // Wed Mar 01 2000 00:00:00 GMT+0800 (中国标准时间) // 其他 hour, minutes, minute, milliseconds 类似,不再赘述 3、方法3.1、各种 toString 方法let now = new Date(2000, 0) // 以下输出为本地时间表示的字符串 now.toString() // Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间) now.toDateString() // "Sat Jan 01 2000" now.toTimeString() // "00:00:00 GMT+0800 (中国标准时间)" now.toLocalString() // "2000/1/1 上午12:00:00" now.toLocaleDateString() // "2000/1/1" now.toLocaleTimeString() // "上午12:00:00" // 以下输出为 UTC 时间表示的字符串 now.toISOString() // "1999-12-31T16:00:00.000Z" now.toUTCString() // "Fri, 31 Dec 1999 16:00:00 GMT" now.toGMTString() // "Fri, 31 Dec 1999 16:00:00 GMT" now.toJSON() // "1999-12-31T16:00:00.000Z" 上述示例可以看出: 3.2、获取时间各部分的方法
let now = new Date(2000, 0) // Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间) // 输入为 ISO8601 格式,方便查看 now.toISOString() // "1999-12-31T16:00:00.000Z" // 以下方法基于本地时间输出 now.getFullYear() // 2000 now.getMonth() // 0, 注意:这里以 0 开始的 monthIndex,因此 1 月输出为 0 now.getDate() // 1 now.getHours() // 0 now.getMinutes() // 0 now.getSeconds() // 0 now.getMilliseconds() // 0 // 以上 getter 方法对应的 setter 方法的示例说明略 // 以下方法基于 UTC 的时间 now.getUTCFullYear() // 1999 now.getUTCMonth() // 11,注意:这里以 0 开始的 monthIndex,因此 12 月输出为 11 now.getUTCDate() // 31 now.getUTCHours() // 16 now.getUTCMinutes() // 0 now.getUTCSeconds() // 0 now.getUTCMilliseconds() // 0 // 以上 getter 方法对应的 setter 方法的示例说明略
3.3、其他方法使用 new Date().getTimezoneOffset() // 480 返回值
let timestamp = Date.now() // 1593013216800 let now = new Date(timestamp) now.valueOf() // 1593013216800 now.getTime() // 1593013216800 4、总结
5、参考 |
|