Я использую date-fns ("date-fns": "^ 2.0. 0-beta.5 ") и date-fnz-tz (" date-fns -tz ":" ^ 1.0.9 ") для форматирования заданных пользователем дат. В моем приложении есть даты начала и окончания. В датах начала часы, минуты и секунды установлены на 00.00.00. Даты окончания установлены на 23:59:59. Смещение часового пояса добавляется к концу даты:
часовой пояс: Азия / Гонконг
бывший. startDate: 2020-02-10T00: 00: 00 + 08: 00 endDate: 2020-02-10T23: 59: 59 + 08: 00
Для достижения 00.00.00 и 23.59.59 я использую startOfDay и endOfDay соответственно
Остальное обрабатывается функцией format.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь отформатировать startDate, значение часового пояса неверно, но не тогда, когда я пытаюсь отформатировать endDate, это правильно.
date = Mon Feb 10 2020 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
}
Может ли кто-нибудь пролить свет на то, почему я получаю +32: 00 в конце моего startDate?