【发布时间】:2021-07-03 13:07:31
【问题描述】:
嘿,我正在从数据库中接收日期,该数据库将这些日期保存为 UTC。当我使用 console.log 打印其中一个日期时,它看起来像这样 2021-04-07T07:00:00.000Z。
现在我想将其转换为Europe/Berlin 时间。但不是作为字符串,我希望它作为 Javascript 日期。
我想做什么
我安装了date-fns 和date-fns-tz,并尝试使用这些包中的多个功能,但似乎没有任何功能可以正常工作或返回正确的日期,但再次使用“Z”后缀。
testDate 是前面提到的日期的示例
// using utcToZonedTime from date-fns-tz
console.log(utcToZonedTime(testDate, 'Europe/Berlin'));
// output: 2021-04-07T07:00:00.000Z
// using getTimezoneOffset from date-fns-tz
console.log(getTimezoneOffset('Europe/Berlin', testDate) / 1000 / 60)
// output: 120
// using addMinutes from date-fns to add the Offset manually
console.log(
addMinutes(
testDate,
getTimezoneOffset('Europe/Berlin', testDate) / 1000 / 60,
),
);
// output: 2021-04-07T09:00:00.000Z
只有最后一种情况输出正确的日期,但格式仍然错误。如何获得我所在时区的正常日期。
【问题讨论】:
-
简单地使用
new Date("2021-04-07T07:00:00.000Z")会发生什么? -
@AnuragSrivastava 我再次使用“Z”得到完全相同的输出
-
使用
new Date,您可以根据您的时区获得正确的日期。要获得不带“Z”的字符串,只需使用字符串操作 -
但是 Z 表示它是 UTC 还是不是?所以我必须手动删除它?有没有更好的方法呢
标签: javascript date datetime date-fns