javascript - 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
:
2020 年 8 月 1 日,欧洲中部时间凌晨 2:20
谷歌不同意,告诉我柏林的时间是:
2020 年 8 月 31 日凌晨 2:23
...即 8 月 31 日而不是 8 月 1 日。
我错过了什么?
解决方案
您的时间字符串是'h:mm A z, MMM do, YYYY'
which 使用do
which is Day of week
。
改为使用(注意代表的'h:mm A z, MMM Do, YYYY'
大写字母)。D
Do
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'})
推荐阅读
- c# - Visual Studio C# 应用程序连接到 MySql 服务器
- java - 列中带有 ImageView 数组的 JavaFX TableView
- asp.net-core - 如何在 MVC 核心 2.0 中使用 DisplayTemplates
- python - python:如何拆分按第一列分组的excel文件
- xpath - xpath 查询到页面上的特定数字
- android - 如何将亚马逊波利文本中的简历添加到 android 中的语音中?
- jquery - jQuery函数不在页面加载时调用
- javascript - 如何在js中连接对象属性
- firebase - 如何处理 Firebase 登录作为首次访问
- java - Appium 收集任何屏幕上的所有文本