如何解决如何用date-fns校正时区?
(在线查看此示例:https://stackblitz.com/edit/date-fns-playground-zeitzonen?file=index.ts->控制台输出)
以下情况是上午11:54:
// Setup
const dateString = "2020-08-30T11:54:48.200Z"; // <---- 11:54 AM
const tz = "Europe/Berlin";
const dateFormat = "d. MMM yyyy,E HH:mm";
const dateOptions = { locale: de };
据我格式化日期,它会更改其时区并增加2个小时:
const parsedDate = parseISO(dateString);
const formattedDate = format(parsedDate,dateFormat,dateOptions);
// outputs: 30. Aug 2020,So. 13:54
const zonedDate = utcToZonedTime(dateString,tz);
// outputs: 2020-08-30T11:54:48.200Z
const formattedZonedDate = format(zonedDate,So. 13:54
所需的(正确的)输出为30. Aug 2020,So. 11:54
我的错误在哪里?最初的dateString
是否具有正确的时区?
解决方法
初始dateString是否具有正确的时区?
不是,如果您希望它在柏林时间,不。末尾的“ Z”表示“ UTC”-您的字符串代表11:54 UTC,实际上在柏林为13:54。格式化在我看来是对的。
坦白说,utcToZonedDateTime
为何仍在报告UTC值而不是分区版本,对我来说还不是很清楚。
如果您希望dateString
代表当地时间,则应该为“ 2020-08-30T11:54:48.200”。另一方面,如果您希望它代表柏林的11:54是 的UTC时间,则应该是“ 2020-08-30T09:54:48.200Z”-注意更改小时到09。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。