JS 时区问题

142 阅读1分钟

前言

在国际化中,经常会碰到因为服务器时区和用户时区不一致,导致时间错乱的问题; 代码也非常的简单,只需要用到 Date对象 以下这个方法:

  1. getTimezoneOffset() 可以获取当前系统时区距离0时区的分钟

代码

const getDateMill = (str) => {
  // 获取本地date
  const currDate = str ? new Date(str) : new Date()

  // 获取本地的时间 与 0时区的偏移值(分钟)
  const timezoneOffsetMinutes = currDate.getTimezoneOffset()

  // hk是+8时区,距离0时区就是 -8 小时,以此为例,看服务器是什么时区的
  const targetTimezoneOffsetMinutes = -8 * 60

  // 计算时区的差值毫秒值
  const targetTimeStamp = currDate.getTime() + ((targetTimezoneOffsetMinutes - timezoneOffsetMinutes) * 60 * 1000)
  return targetTimeStamp
}