banner
banner
banner
NEWS LETTER

ES6-Date

Scroll down

基本方法

  • 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* timeZone: 东n区为正,西n区为负, 单位为小时
*/
const getFullTimeInfo = (timeZone, country, spliter) => {

//获取本地时间与格林威治时间的时间差(注意是分钟,记得转换)
const diff = new Date().getTimezoneOffset();

//根据本地时间和时间差获得格林威治时间
const absTime = new Date().getTime() + diff * 60 * 1000;

//根据格林威治时间和各地时区,得到各地时区的时间
let localTime = new Date(absTime + timeZone * 60 * 60 * 1000)

// 考虑夏令时
// judgeDST是我封装好的一个判断夏令时的方法
const isDST = judgeDST(localTime, country);
if (isDST) {
localTime = new Date(absTime + (timeZone + 1) * 60 * 60 * 1000)
}

return {
time: formatTime(localTime, spliter).split(':').slice(0,2).join(':'),
isDST
};
}
其他文章
cover
ES6-Generator和 Iterators
  • 24/10/31
  • 15:54
  • ES6
cover
ES6-async/await
  • 24/10/31
  • 15:54
  • ES6
目录导航 置顶
  1. 1. 基本方法
    1. 1.1. 习惯使用+,弱类型转换,把string类型转number类型
    2. 1.2. 借助插件减少代码量和一些工作
  2. 2. 时区
    1. 2.1. UTC+0时区与本地时区的差值,单位为分钟
    2. 2.2. 解决时区不同时间不同的问题
请输入关键词进行搜索