0

我正在使用date-fns ("date-fns": "^2.0.0-beta.5") 和date-fnz-tz ("date-fns-tz": "^1.0.9") 格式化用户给定日期。我的申请有开始日期和结束日期。开始日期的小时分钟和秒设置为 00.00.00。结束日期设置为 23.59.59。时区偏移附加到日期的末尾:

时区:亚洲/Hong_Kong

前任。开始日期:2020-02-10T00:00:00+08:00 结束日期:2020-02-10T23:59:59+08:00

为了实现 00.00.00 和 23.59.59 我分别使用startOfDayendOfDay

其余的由格式函数处理

我遇到的问题是,当我尝试格式化 startDate 时,时区值不正确,但当我尝试格式化 endDate 时却没有,它是正确的。

日期 = 2020 年 2 月 10 日星期一 17:55:43 GMT+0800(香港标准时间){},timeZone = "Asia/Hong_Kong"

import { startOfDay } from "date-fns"
import { format } from "date-fns-tz"

function getStartDate(date: Date, timeZone: string) {
  const startDate = startOfDay(new Date())

  // startDate = Mon Feb 10 2020 00:00:00 GMT+0800 (Hong Kong Standard Time) {}

  const formatted = format(startDate, "yyyy-MM-dd'T'HH:mm:ssXXX", { timeZone })

  // formatted = "2020-02-10T00:00:00+32:00"

  return formatted
}

endOfDay 的类似过程

import { endOfDay } from "date-fns"
import { format } from "date-fns-tz"

function getEndDate(date: Date, timeZone: string) {
  const endDate = endOfDay(new Date())

  // endDate = Mon Feb 10 2020 23:59:59 GMT+0800 (Hong Kong Standard Time) {}

  const formatted = format(endDate, "yyyy-MM-dd'T'HH:mm:ssXXX", { timeZone })

  // formatted = "2020-02-10T23:59:59+08:00"

  return formatted
}

任何人都可以解释为什么我在 startDate 结束时得到 +32:00 吗?

4

1 回答 1

0

通过将 date-fns-tz 更新到最新版本来解决。在写这个答案的时候是 1.0.10

于 2020-02-11T01:25:35.217 回答