首页 > 解决方案 > 如何在javascript lwc中停止新日期对象的时区转换?

问题描述

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

标签: javascriptdatetimetimezonelwc

解决方案


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

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

我对 LWC 了解不多,但总的来说,您只能通过使用Date对象而使用其他东西来解决这个问题。有许多优秀的 JavaScript 日期库可供选择,例如Luxon


推荐阅读