日期比较时刻js

date comparison moment js

我想比较两个日期,我的日期格式是DD-MM-YYYY,但我不知道为什么我比较日期时输出returns false

示例 1

const date1 = '30-06-2021';
const date2 = '10-01-2022';
const result = moment(date1) < moment(date2); // return false, should return true

示例 2

const date1 = '30-06-2021';
const date2 = '10-01-2022';
const result = moment(date1).isBefore(date2); // return false, should return true

这里有两个问题:

  1. 您希望 moment 猜测您的日期格式,但它不能可靠地做到这一点。如果您的字符串不是 RFC2822 或 ISO-8601 格式,则始终 provide a format stringmoment 本身会警告您在库的开发版本中这样做:

    Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/

  2. < 不能用于有意义地比较对象。如果您想知道一个日期是否在另一个日期之前,请使用 isBefore 方法。

例如:

const date1 = "30-06-2021";
const date2 = "10-01-2022";
const format = "DD-MM-YYYY";
const result = moment(date1, format).isBefore(moment(date2, format));

const date1 = "30-06-2021";
const date2 = "10-01-2022";
const format = "DD-MM-YYYY";
const result = moment(date1, format).isBefore(moment(date2, format));
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>