基本方法
- new Date() — 构造Date实例
- new Date(年,月,日(可选),…)
- .getFullYear() 获取年
- .getMonth() 获取月
- .getDate() 获取日
- .getDay() 获取一周中每天的对应数值
(可以将需要展示对应天数的文本用数组形式显示,然后通过下标获取) - day 传 0 表示获取上个月最后一天
1
const endDate = new Date(年, 月, 0)
- .valueOf 转换成时间戳
- .toTimeString() 时间戳转字符串
- .setHours(小时,分钟,秒) 设置时间
习惯使用+,弱类型转换,把string类型转number类型
借助插件减少代码量和一些工作
- DayJs
- 使用方式:
1
dayjs().format('YYYY-MM-DD HH:mm:ss')
- 当使用一些查询的方法时,有些依赖一些插件
- 要注意调用dayjs.extend(插件),最好放在全局调用
- 使用方式:
时区
- GMT 格林威治时间与东八区相差 8 个小时
UTC+0时区与本地时区的差值,单位为分钟
1 | new Date().getTimezoneOffset() |
解决时区不同时间不同的问题
- 首先获取零时区的时间
1
2const diff = new Date().getTimezoneOffset() // 先获取当前地区与零时区的时间差
const absTime = new Date.getTime() + diff * 60 * 1000 // 根据本地时间与时间差获取格林威治时间 - 其次获取不同地区与零时区的时差
1
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 | /** |