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

formating iso 8601 to "MMM" and "hourPM/AM" using moment js

我的日期格式如下:

"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 获取所需格式的日期?

你能试试这个吗:

const a = moment("2021-01-16T03:00:00Z")
let   b = a.format("MMM Do [-] h a")
// MMM Do [-] h a
console.log(b)

你还有一个他想要的 0 : 2021-01-16T03:00:00[0]Z

您需要将字符串作为 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") 给出的时间是 5amsplit 这里。否则,正确的方法是在不更改时区的情况下将字符串格式化为正确的日期。