【问题标题】:Unable to parse time string无法解析时间字符串
【发布时间】:2019-05-15 17:00:15
【问题描述】:

我需要将数据库中的 "Wednesday, May 15th, 11:36 am" 格式化为 iso 字符串,但尝试时我不断收到无效的日期对象。

我试过这个。 moment(value.note.noteTime).format("dddd, MMMM Do, h:mm a") 它返回"Wednesday, May 15th, 11:36 am"并存储在我的数据库中。

el.time 与"Wednesday, May 15th, 11:36 am"格式相同

也试过这个。

console.log(moment(el.Time,moment.ISO_8601)) 或者 console.log(moment(el.Time).format())

如何将 el.time 解析为 iso 字符串?

【问题讨论】:

  • el 是什么?这是时间的字符串表示形式吗?
  • el.time 的格式与 "Wednesday, May 15th, 11:36 am" 的格式相同,只是在一个 forEach 循环中
  • 所以el.Time 是一个字符串?
  • 是的 el.Time="Wednesday, May 15th, 11:36 am" 我如何将其转换为 iso 格式?
  • 为什么要将日期的显示版本存储在数据库中,而不是将其存储为实际日期?

标签: javascript time momentjs


【解决方案1】:

要达到预期效果,请使用以下选项

  1. 在使用 moment 和时指定日期格式
  2. 使用 toISOString() 可以避免无效日期错误

问题:提供给时刻的日期必须是已知格式以避免无效日期错误,指定格式始终是避免按时刻解析的最佳选择。
请参阅此链接以了解当前接受的格式-https://momentjs.com/docs/#/parsing/string/

var t = "Wednesday, May 15th, 11:36 am"
console.log(moment(t, "dddd, MMMM Do, h:mm a").toISOString())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

codepen - https://codepen.io/nagasai/pen/gJmpge

【讨论】:

  • 最好将问题与解决方案一起说明。问题是当要求moment 解析它时,OP 指定了不正确的格式(moment.ISO_8601 而不是"dddd, MMMM Do, h:mm a")?
  • 谢谢,这正是我想要的!
  • 谢谢@JuanMendes,我同意你的看法并更新了我的答案
猜你喜欢
  • 2019-11-08
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
相关资源
最近更新 更多