【问题标题】:Converting UTC Time Field To Browser Time Using Moment.js使用 Moment.js 将 UTC 时间字段转换为浏览器时间
【发布时间】:2019-12-19 09:33:45
【问题描述】:

我只收到来自我的数据库的 UTC 时间,例如 02:10:12,我想将此时间转换为用户浏览器时间。

我试过下面的链接

Moment Js UTC to Local TimeChanging the Utc Date to Local Date using moment.jsConvert UTC time to Local time of Browser

但它们都不适合我,因为它们中的大多数都使用日期时间字段,我的数据库中只有时间类型。

我想要做的是,如果我的数据库 UTC 时间是 02:10:12,那么使用 moment.js 我们检测用户浏览器时区并将这个 UTC 时间转换为那个时区并在 UI 中显示。

【问题讨论】:

  • “我在链接下面试过了” 没有说太多,而是提供了一个minimal reproducible example 以便我们可以看到问题。
  • 如果这应该在客户端完成,不要在标签列表中添加asp.*标签。
  • 这里没有滥用权力,我只是解释了对海报的期望,如果有什么不清楚的地方,请重读How to Ask。此外,标签列表不是让您针对给定的用户组,而是告诉用户问题是什么。用户可以订阅一个标签,而想要asp 的用户不会同时想要javascript(除非他们都订阅了)
  • 你在这里已经够久了,知道如何发布一个合适的问题。
  • 意识到时间转换不能与日期完全分离。例如,2019 年 3 月 10 日凌晨 01:59:59.999 在美国东海岸,我们没有在下一毫秒内继续到凌晨 02:00:00.000。相反,我们直接过渡到凌晨 03:00:00.000。但是,如果您在 UTC 中跟踪事件,它仍会记录 06:00:00.000 AM,因为 UTC 不跟踪 DST。

标签: javascript momentjs


【解决方案1】:

好吧,moment 适用于日期和时间。您可以做的是使用当前日期和所述时间创建一个moment,然后使用格式方法仅显示时间。

moment.utc(`2019-08-19 ${server_utc_time}`).local().format('HH:mm:ss');

server_utc_time 是您服务器的 UTC 时间。

【讨论】:

  • 请注意,由于夏令时的变化无常,这可能会或可能不会给您正确的时间,具体取决于记录的时间和记录的日期。此外,无论何时从 Moment 中的字符串解析日期,都应指定日期格式。见the Parsing Guide in the docs
  • @HereticMonkey 这是真的。最好使用 UNIX 时间戳而不是时间值将时间存储在数据库中。但是给定这样的时间值,您不能考虑夏令时。关于时刻解析,在文档中,它说只有在使用 ISO 8601 格式以外的任何内容时才应指定格式 [momentjs.com/docs/#/parsing/string
猜你喜欢
  • 2021-07-21
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 2017-09-10
  • 2015-05-20
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多