【问题标题】:convert "Thu Sep 19 14:24:59 UTC 2019" to moment date将“Thu Sep 19 14:24:59 UTC 2019”转换为时刻日期
【发布时间】:2020-01-25 00:22:45
【问题描述】:

我尝试转换这个日期:

created_at= "Thu Sep 19 14:24:59 UTC 2019"

使用这个:

let elementDate=moment(created_at)

但我得到了:

moment.invalid(/* Fri Aug 30 09:52:04 UTC 2019 */)

我也试过这个:

moment(created_at,"DDD Mo DD hh:mm:ss UTC YYYY") 

但似乎不正确。有什么想法吗?

【问题讨论】:

  • 我对时刻一无所知,但通常月份是 MM 而不是 Mo。您所说的“似乎不正确”是什么意思。它会出错或产生意想不到的效果吗?
  • @Marie 是对的,“Fri”是 ddd 而不是 DDD。 24 小时内的小时数是 HH
  • new Date("Thu Sep 19 14:24:59 UTC 2019") 工作。
  • @dandavis - 它可能在某些实现中起作用,但这不符合规范。
  • @MattJohnson-Pint:是的,但它可以在 webkit/v8/ff 中工作,而且现在已经没有太多其他 UA 需要担心了。

标签: javascript datetime timezone momentjs


【解决方案1】:

来自Moment.js docs:

除非您指定时区偏移量,否则解析字符串将创建一个 当前时区的日期。

如果您需要解析的日期字符串都是 UTC,那么您可以简单地使用 moment.utc() 并修复您的星期几和月份格式标记。否则,您将不得不对字符串进行一些额外的预处理,因为它无法解析时区缩写。

const dt = moment.utc('Thu Sep 19 14:24:59 UTC 2019', 'ddd MMM D HH:mm:ss [UTC] YYYY');
console.log(dt.format());
// 2019-09-19T14:24:59Z
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

【讨论】:

  • @MattJohnson-Pint - 感谢您的提示(已相应编辑)。
猜你喜欢
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多