[英]How to correct the time-zone with 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, dateFormat, dateOptions);
// outputs: 30. Aug 2020, So. 13:54
所需的(正确的)output 将是30. Aug 2020, So. 11: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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.