如何使用原生js计算夏令时?

如题,请问如何使用Date对象计算夏令时?

阅读 2.6k
2 个回答

AI太好用了,推荐你学习使用下。下面这个答案我没有测试,应该能提供一个思路

// 获取当前时间的时间戳
const now = new Date();
const timestamp = now.getTime();

// 获取当前时区偏移量
const timezoneOffset = now.getTimezoneOffset() * 60 * 1000;

// 计算夏令时偏移量
const summerOffset = 60 * 60 * 1000;

// 判断当前时间是否处于夏令时期间
const isSummerTime = timestamp >= (1553994000000 + summerOffset) && timestamp < (1572138000000 + timezoneOffset);

if (isSummerTime) {
  // 是夏令时,进行相应处理
  console.log('当前时间处于夏令时');
} else {
  // 不是夏令时,进行相应处理
  console.log('当前时间不处于夏令时');
}

该示例代码中,now.getTime() 获取到的是当前时间的时间戳,now.getTimezoneOffset() 获取到了当前时区与 UTC 的时差(单位为分钟),因此需要将其转换为毫秒表示,从而得到 timezoneOffset。计算夏令时偏移量时,需要将一小时(即 60 分钟)转换为毫秒表示,从而得到 summerOffset,并与开始和结束时间戳相加,得到夏令时开始和结束时间戳。最后判断当前时间是否处于夏令时期间即可

得看你计算出来的夏令时是需要是 Date 类型还是 String 类型的。
如果是 Date 类型的话,并不可行,浏览器使用的始终是本地时间。
如果说是 String 类型的话,使用 getTimezoneOffset 获取时间偏移量之后通过加法计算之后拼接回来就行。如何计算偏移量1楼已经回复了。

所以最好还是借助 dayjs 或者 momentjs 来实现,并且前者只有 2k

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏