【问题标题】:Comparing Dates in JavaScript For any Give Date Format比较 JavaScript 中任何给定日期格式的日期
【发布时间】:2021-11-17 19:18:14
【问题描述】:

假设我有不同格式的日期,例如“MM/DD/YY”、“DD/MM/YY”、“YY/MM/DD”,我想根据上述任何给定格式比较日期,在JavaScript。类似的东西:

let date1 = "21/04/2021";
let date2 = "25/01/2021";
let format = "DD/MM/YY";
Date(date1, format) > Date(date2, format);
True
Date(date1, format) < Date(date2, format);
False
Date(date1, format) === Date(date2, format);
False

在比较时,两个日期的格式也将相同。除了使用 split('/') 之外,还有更好的方法吗?

【问题讨论】:

  • 您可以使用 date-fns 之类的库来解析自定义格式的日期字符串:date-fns.org/v2.25.0/docs/parse
  • 不这么认为。在某些时候,必须将 M、D 和 Y 分开,以便可以从中构造一个有效的日期对象(真的很简单)。当然,这需要一个 .split('/') 字符串来完成。
  • @Mogzon 我正在寻找的想法仍然无法通过date-fns 实现,因为您必须像new Date(2014, 1, 11) 这样定义日期,然后给出格式,但在我的情况下我不想解析日期。我只想提供日期作为字符串 2014/01/11 然后格式化。
  • 另外,目的不是日期转换,而是根据 -1,0,1 进行日期比较的结果。希望现在有意义。谢谢

标签: javascript date-format date-comparison


【解决方案1】:

在尝试了多种解决方案后,我找到了使用 moment library 比较任何给定格式的日期的最佳方法。

let result = moment(date1, format).isBefore(moment(date2, format))? -1: 1;

  1. result = -1 表示 date1 更小
  2. result = 1 表示 date1 大于或等于

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多