【问题标题】:Moment JS: Get the date and time from the lost timezone stringMoment JS:从丢失的时区字符串中获取日期和时间
【发布时间】:2021-01-30 14:33:08
【问题描述】:

我有一些格式化的日期时间字符串,例如 Fri Sep 18th 2020 05:52:20。
当我使用 momentJS 将主题转换为 datetime => 失败时。因为那是无效的日期时间格式。
那么,如何将它们转换为带有时区的日期时间(即:'Euro/Paris')。

【问题讨论】:

  • 如果你想解析一个字符串,就好像它是针对特定时区的一样,你需要使用像Luxon或date-fns这样的库,除非你想自己写一些东西。

标签: javascript datetime format timezone momentjs


【解决方案1】:

如果您的日期格式不是标准格式,您可以为其指定格式字符串作为第二个参数

(https://momentjs.com/docs/#/parsing/string-format/)

格式字符串:3 个字母的星期几、3 个字母的月份、序数日、4 位数的年份、24 小时时间格式,前导 0 为:

ddd MMM Do YYYY HH:mm:ss

您可以使用moment().tz 指定时区

moment.tz(
    moment(
        "Fri Sep 18th 2020 05:52:20",
        "ddd MMM Do YYYY HH:mm:ss"
    ), "Europe/Paris")
    .format("YYYY-MM-DD HH:mm:ss z"); // "2020-09-18 12:52:20 CEST"

另外请记住 RobG 对时区的评论

字符串被解析为本地,它是被转移到指定时区的输出。因此生成的时间戳值取决于主机系统时区设置

【讨论】:

  • 天哪。我使用moment(dateString).format('ddd MMM Do YYYY HH:mm:ss') 而不是moment(dateString, 'ddd MMM Do YYYY HH:mm:ss')。那是因为我的结果是错误的。非常感谢,你拯救了我的早晨。
  • 请注意,字符串被解析为本地,它是被转移到指定时区的输出。因此生成的时间戳值取决于主机系统时区设置。
  • @DuyHưngAndrogyneTenor 很高兴你能弄明白!
  • @RobG 感谢您的澄清!我已将其添加到答案中
  • 如果您希望将其解析为在提供的时区中,只需删除内部 moment 函数。换句话说,moment.tz(input, format, timezone).
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2023-03-18
  • 2015-05-11
相关资源
最近更新 更多