date-fns-timezone 给出错误的结果?
date-fns-timezone Giving Wrong Result?
现在是 2020 年 8 月 30 日星期日 5:20pm PST。
如果我运行这个:
import {formatToTimeZone } from 'date-fns-timezone';
const dateNow = new Date();
const timeFormattedForUserTimezone = formatToTimeZone(dateNow, 'h:mm A z, MMM do, YYYY', {timeZone:'Europe/Berlin'})
...我在 timeFormattedForUserTimezone
中得到了这个:
2:20 AM CEST, Aug 1st, 2020
Google不同意,告诉我柏林时间是:
2:23 AM August 31, 2020
...即8 月 31 日而不是 8 月 1 日。
我错过了什么?
您的时间字符串是 'h:mm A z, MMM do, YYYY'
,它使用 do
即 Day of week
。
改用'h:mm A z, MMM Do, YYYY'
(注意Do
中的大写D
代表Day of month
)。
文档在这里:https://github.com/prantlf/date-fns-timezone/blob/master/docs/API.md#formattotimezone
因此您的代码变为:
import {formatToTimeZone } from 'date-fns-timezone';
const dateNow = new Date();
const timeFormattedForUserTimezone = formatToTimeZone(dateNow, 'h:mm A z, MMM Do, YYYY', {timeZone:'Europe/Berlin'})
现在是 2020 年 8 月 30 日星期日 5:20pm PST。
如果我运行这个:
import {formatToTimeZone } from 'date-fns-timezone';
const dateNow = new Date();
const timeFormattedForUserTimezone = formatToTimeZone(dateNow, 'h:mm A z, MMM do, YYYY', {timeZone:'Europe/Berlin'})
...我在 timeFormattedForUserTimezone
中得到了这个:
2:20 AM CEST, Aug 1st, 2020
Google不同意,告诉我柏林时间是:
2:23 AM August 31, 2020
...即8 月 31 日而不是 8 月 1 日。
我错过了什么?
您的时间字符串是 'h:mm A z, MMM do, YYYY'
,它使用 do
即 Day of week
。
改用'h:mm A z, MMM Do, YYYY'
(注意Do
中的大写D
代表Day of month
)。
文档在这里:https://github.com/prantlf/date-fns-timezone/blob/master/docs/API.md#formattotimezone
因此您的代码变为:
import {formatToTimeZone } from 'date-fns-timezone';
const dateNow = new Date();
const timeFormattedForUserTimezone = formatToTimeZone(dateNow, 'h:mm A z, MMM Do, YYYY', {timeZone:'Europe/Berlin'})