javascript - 使用 moment js 将 iso 8601 格式化为 "MMM"和 "hourPM/AM"

标签 javascript date momentjs iso8601

我的日期格式如下:

"2021-01-16T03:00:000Z"

我想使用 momentJs 从中得到类似下面的内容:

Jan 16 - 3am

我写了这段代码,但它给我 invalid date 错误(我知道 .format() 参数不是我想要的日期,但我一直坚持从中获取有效日期第一步,我找不到我应该为我想要的格式传递哪个参数):

moment("2021-01-16T03:00:000Z").format("YYYY-MM-DD h:mm:ss a");

如何使用 momentJs 获取所需格式的日期?

最佳答案

您需要将字符串作为 YYYY:MM:DDTHH:MM:SS 传递给它:

const getDateFormatted = str => {
  const date = str.slice(0,19);
  return moment(date).format("MMM DD - h a");
}
console.log( getDateFormatted("2021-01-16T03:00:000Z") );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous"></script>

编辑:由于 OP 的预期时间是 3am,并且 moment("2021-01-16T03:00:00Z").format("MMM DD - h a") 会给出时间为5am,可以在这里split。否则,正确的方法是在不更改时区的情况下将字符串格式化为正确的日期。

关于javascript - 使用 moment js 将 iso 8601 格式化为 "MMM"和 "hourPM/AM",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66427040/

相关文章:

javascript - (Phonegap) 当 GPS 位置在范围内时触发 JavaScript 事件

javascript - 在 emscripten 中更改默认命名空间 'Module'

linux - 在 bash 中向字符串日期添加秒

javascript - 使用 moment.js 确定 moment() 是在特定时间 block 之前、期间还是之后

javascript - 如何通过Lodash将对象转换为排序数组

javascript - 是否有一个 JavaScript 事件来检测何时使用 CSS3 resize 属性更改 div 的大小?

ios - 重新安排通知操作通知不起作用 Swift

mysql - 重叠日期时间的最大数量,有多个开始和结束时间

javascript - 两个日期之间的确切月份差异 - MomentJS

javascript - 为什么 moment.js 只为某些日期生成无效日期?