date-fns-timezone结果不正确?

问题描述

现在是太平洋标准时间2020年8月30日(星期日)下午5:20。

如果我运行此命令:

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中得到了这个信息:

CEST,2020年8月1日,上午2:20

Google表示不同意,并告诉我在柏林的时间是:

2020年8月31日上午2:23

...即是8月31日而不是8月1日。

我想念什么?

解决方法

您的时间字符串是'h:mm A z,MMM do,YYYY',它使用的是do的{​​{1}}。

请改用Day of week(请注意'h:mm A z,MMM Do,YYYY'中大写的D代表Do)。

此处的文档:https://github.com/prantlf/date-fns-timezone/blob/master/docs/API.md#formattotimezone

因此您的代码变为:

Day of month