date-fns-timezone结果不正确?

问题描述

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

@H_404_0@如果我运行此命令:

import {formatToTimeZone } from 'date-fns-timezone';
const dateNow = new Date();
const timeFormattedForUserTimezone = formatToTimeZone(dateNow,'h:mm A z,MMM do,YYYY',{timeZone:'Europe/Berlin'})
@H_404_0@ ...我在timeFormattedForUserTimezone中得到了这个信息:

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

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

@H_404_0@ 2020年8月31日上午2:23

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

@H_404_0@我想念什么?

解决方法

您的时间字符串是'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