moments无法正确解析字符串



我有那个日期:

2020年5月2日下午12:33:08

什么意思:

02

05

年度2020

小时12

分钟33

08

我想通过以下调用将其解析为日期对象,但返回的日期是错误的:

moment("02.05.2020 12:33:08").day() => returned 3 ???

为什么momentjs解析错误?

我认为您需要提供一种格式来允许moment正确解析日期。

请参阅此处的文档:Moment解析字符串+格式。

一旦你这样做,你应该得到正确的结果:

const dateFormat = "DD.MM.YYYY HH:mm:ss";
const parsedDate = moment("02.05.2020 12:33:08", dateFormat);
console.log("Day of week:", parsedDate.day());
console.log("Day of month:", parsedDate.date());
console.log("Full date:", parsedDate.format("dddd, MMMM Do YYYY, HH:mm:ss"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

存在两个潜在问题。

首先,如果您只单独运行解析(就像在命令行REPL中一样(,则会收到以下警告

弃用警告:提供的值不是可识别的RFC2822或ISO格式。moment构造又回到了js Date((,它在所有浏览器和版本中都不可靠。不鼓励使用非RFC2822/ISO日期格式,并将在即将发布的主要版本中删除。

因此,根据您的版本,这可能不是最好的解析字符串。

但是,.day()也会为您提供一周中的某一天的索引。2月5日是一个星期三,由于Moment从星期天算起,这几乎可以肯定是正确的答案。如果您想要月份的日期(5(,则为.date()

事实上,还有一个第三个潜在问题,因为"02"one_answers"05"导致日期不明确,所以你可能想给Moment一个解析字符串,一个看起来像"MM.DD.YYYY hh:mm:ss"的第二个参数。

最新更新