比较两个未知格式的日期

时间:2019-07-10 11:47:46

标签: javascript momentjs

我想两个将两个日期与时刻进行比较。我知道我可以参加

moment(firstDate).isSameOrBefore(secondDate)

但是问题是日期的格式未知。有两种可能的格式:

  • iso字符串'2019-07-01'
  • 已转换的语言环境日期为'23 .07.2019'(德语格式)

我确实知道语言环境,并且知道通过

完成的转换
formattedDate: function() {
  if (!this.date) {
    return ''
  }

  moment.locale(this.locale);
  return moment(this.date).format('L');
}

因此,在比较时,两个日期都可以是原始iso字符串或格式化的日期。

如何比较两个格式未知的日期?


我试图将两个日期转换为相同的格式,但是我不确定这是否正确(并且可能不会出现错误)

const firstConvertedDate = moment(firstDate).format()
const secondConvertedDate = moment(secondDate).format()
return moment(firstConvertedDate).isSameOrBefore(secondConvertedDate)

1 个答案:

答案 0 :(得分:1)

您无法根据提供的字符串猜测格式。例如,字符串"10/7/2019"可能是模棱两可的,因为它同时允许dd/mm/yyyymm/dd/yyyy。如果您知道语言环境,则可以将其提供给.moment()函数。

moment(dateString, "L", locale);

var dateString = "10/7/2019",
    display = "YYYY-MM-DD",
    en_us = moment(dateString, "L", "en-us"),
    en_gb = moment(dateString, "L", "en-gb");

console.log(
  en_gb.format(display),
  "<",
  en_us.format(display),
  "//=>",
  en_gb.isBefore(en_us)
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js"></script>