基本方法
- new Date() — 构造Date实例
- new Date(年,月,日(可选),…)
.getFullYear()
获取年.getMonth()
获取月.getDate()
获取日.getDay()
获取一周中每天的对应数值
(可以将需要展示对应天数的文本用数组形式显示,然后通过下标获取)- day 传 0 表示获取上个月最后一天
const endDate = new Date(年, 月, 0)
.valueOf
转换成时间戳.toTimeString()
时间戳转字符串.setHours(小时,分钟,秒)
设置时间习惯使用+,弱类型转换,把string类型转number类型
借助插件减少代码量和一些工作
- DayJs
- 使用方式:dayjs().format(‘YYYY-MM-DD HH:mm:ss’)
- 当使用一些查询的方法时,有些依赖一些插件
- 要注意调用dayjs.extend(插件),最好放在全局调用
时区
- GMT 格林威治时间与东八区相差 8 个小时
UTC+0时区与本地时区的差值,单位为分钟
new Date().getTimezoneOffset()解决时区不同时间不同的问题
首先获取零时区的时间
const diff = new Date().getTimezoneOffset() // 先获取当前地区与零时区的时间差
const absTime = new Date.getTime() + diff * 60 * 1000 // 根据本地时间与时间差获取格林威治时间
其次获取不同地区与零时区的时差
let localTime = new Date(absTime + timeZone * 60 * 60 *1000) // timeZone 传进来的时间单位小时,东为正西为负
用零时区的时间加减与零时区的视察,得到各地的绝对时间
考虑夏令时
根据资料,获得美国和澳大利亚的夏令时规则:美国:
每年的3月第二个星期日02:00:00,时钟向前调整1小时,变为03:00:00,开始夏令时。每年的11月第一个星期日02:00:00,时钟向后调整1小时,变为01:00:00,结束夏令时。
澳大利亚:
每年的10月第一个星期日02:00:00,时钟向前调整1小时,变为03:00:00,开始夏令时。每年的4月第一个星期日03:00:00,时钟向后调整1小时,变为02:00:00,结束夏令时。
1 | /** |