我有那个日期:
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"
的第二个参数。