独立于时区的日期 javascript

Timezone independent dates javascript

使用 javascript/react native + redux 我需要以一种时间格式保存时间戳,这种格式在保存日期时知道本地时间,但在读取另一个时区的相同日期时不知道。

假设一个用户在一天内向西环游世界,每小时保存一个时间戳,所有 i 个不同的时区,都在 2021 年 1 月 30 日当地时间 18:00 小时。在 18:00.

处产生 24 个时间戳

以类似于下面的方式使用 isWithinInterval from date-fns 之类的函数,所有时间戳都应该 return 为真。

isWithinInterval(
  timestamp,
  {start: new Date(2021,0,30,17,30}, end: new Date(2021,0,30,18,30)}, 
) // -> true

如何做这件事?最好以 react-redux 兼容(可序列化)的方式。默认情况下,您的日期对象将根据您设备上的当地时间以 UTC 格式保存。

我花了很长时间才理解日期对象,以至于我花了很长时间才明白这个问题实际上是“date-fns-tz”包的全部内容。这就是我目前正在解决的问题:

  1. 创建一个与本地时间相同的 utc 时间 使用:
import {zonedTimeToUtc} from "date-fns-tz"
const myDate = new Date()  // eg 2021-02-03 10:00 UTC +5
const localTimeIdenticalUtc = zonedTimeToUtc(localDateObject, localTimeZone)  // 2021-02-03 10:00 UTC +-0
  1. 当我想使用 UTC 日期时,无论我在哪个时区,我都会将它转回相同的 localDate。
    import {utcToZonedTime } from "date-fns-tz"
    const zonedTimeToUtc(localTimeIdenticalUtc, localTimeZone) // 2021-02-03 10:00 UTC +5