如何在javascript lwc中停止对新日期对象的时区转换?

问题描述

我收到具有不同时区的日期时间字符串(例如'2020-10-28T08:00:00 + 10:00,2020-10-28T11:00:00 + 11:00')。当我创建新的日期对象时,它将字符串转换为当前的用户时区,在UI上显示不同的日期和时间,而不是显示正在接收的内容。如何停止时区转换?

解决方法

如果LWC使用JavaScript Date对象,那么抱歉-但您无能为力。您描述的行为是Date对象的工作方式。

Date对象内部仅跟踪一个时间戳,该时间戳是自Unix时代1970-01-01T00:00:00.000Z(UTC)以来的毫秒数。如果您解析带有偏移量的字符串,则在确定时间戳记时会考虑该偏移量。如果使用toString()创建字符串,它将使用系统本地时区将时间戳转换为字符串。您解析的原始字符串或其偏移量不会保留在Date对象中。

我对LWC不太了解,但总的来说,您只能通过{em> not 使用Date对象并使用其他方法来解决此问题。有很多不错的JavaScript日期库可供选择,例如Luxon