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',它使用 doDay 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'})