【问题标题】:NaN while finding Difference using momentjsNaN 同时使用 momentjs 找到差异
【发布时间】:2020-08-25 16:12:21
【问题描述】:

我正在使用flatpickr 从用户那里获取日期。我从用户那里得到两个日期。现在我想找出两个日期之间的差异,但它显示NaN

 computed: {
    total() {
      if (this.selectedRooms && this.selectedRooms.length) {
        const check_in = moment(this.form.check_in, "d-m-Y H:i");
        const check_out = moment(this.form.check_out, "d-m-Y H:i");

        const nights = check_in.diff(check_out, "days");
       
        let total = 0;
        for (let i = 0; i < this.selectedRooms.length; i++) {
          if (this.invoice.nights) {
            total += +this.selectedRooms[i][this.type] * +nights;
          } else {
            total += +this.selectedRooms[i][this.type];
          }
        }
        return total;
      } else {
        return 0;
      }
    }
}

Flatpickr 配置

 configdateTimePicker: {
        enableTime: true,
        dateFormat: "d-m-Y H:i",
      },

错误

NaN

当我在不解析日期的情况下尝试它时,它显示的日期无效

【问题讨论】:

  • 我使用 vue 只是为了演示我使用了变量 date1 和 date2 请检查我是否包含了照片

标签: javascript momentjs flatpickr


【解决方案1】:

flatpickrmoment 中的格式化/解析标记不同。所以在解析moment对象的时候,一定要关注moment formatting/parsing token

const date1 = "25-08-2020 21:38"
const date2 = "26-08-2020 21:38"
const firstDate = moment(date1, "DD-MM-YYYY HH:mm")
const secondDate = moment(date2, "DD-MM-YYYY HH:mm")

console.log(firstDate.diff(secondDate, "days"))
&lt;script src="https://momentjs.com/downloads/moment.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 使用console.log(secondDate.diff(firstDate, "days")) 表示正值
【解决方案2】:

查找日期差异不需要格式化。您可以使用以下代码。

 const date1 = '2020-08-25 12:00:00';
        const date2 = '2020-08-26 12:00:00';
        const firstDate = moment(date1);
        const secondDate = moment(date2);
       console.log(firstDate.diff(secondDate, "days"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多