【问题标题】:How to compare 2 dates using Momentjs diff如何使用 Momentjs diff 比较 2 个日期
【发布时间】:2018-04-03 14:18:32
【问题描述】:

我正在尝试比较 2 个日期。如果收到的日期早于当天(今天),我必须删除属性@availabilityBeginDate,但如果收到的日期晚于当天,我必须保存它。我是用 CoffeeScript 写的。

我想用 Moment.js 和 diff 来做这件事。这是我尝试过的代码,但它不起作用,我不知道为什么。

if (moment(moment(getCurrentDate()).diff(@availabilityBeginDate)).format("DD MMMM YYYY") < 0) 
    delete @availabilityBeginDate

这里是getCurrentDate 方法:

getCurrentDate:() ->
  today = new Date
  dd = today.getDate()
  mm = today.getMonth() + 1
  yyyy = today.getFullYear()
  if dd < 10
    dd = '0' + dd
  if mm < 10
    mm = '0' + mm
  today = dd + ' ' + mm + ' ' + yyyy
  return today

这是我保存@availabilityBeginDate的方法:

bidDispoDetails.rows.push({label: 'Début', value: moment(@availabilityBeginDate).format("DD MMMM YYYY")}) if @availabilityBeginDate?

【问题讨论】:

  • 代码分隔符应该用于实际代码,而不仅仅是突出显示单词或短语。
  • 我不明白你在问什么@RobG
  • 什么都不问,只是评论。 getCurrentDate 函数返回一个非标准字符串,您将其传递给 moment.js 而不告诉它格式。可能会引发您未报告的错误。第一个表达式可能解析为'Invalid Date' &lt; 0
  • 通过.format("DD MM YYYY") 我不是设置了两个日期的格式吗?我应该在两个日期都做.format("DD MM YYYY") 还是已经在getCurrentDate
  • 不,设置输出格式。解析格式在对 moment 的调用中设置:moment(getCurrentDate(), 'DD MM YYYY') 但如果打算为一天的开始创建一个日期,那么moment().startOf('day') 的效率要高得多。

标签: javascript date coffeescript momentjs datetime-comparison


【解决方案1】:

format 方法设置输出的格式。要提供解析格式,请在对构造函数的调用中提供。

我认为按照逻辑步骤,您正在寻找的是:

var availabilityBeginDate = '10 10 2017';
var format = 'DD MM YYYY';
var today = moment().startOf('day');
var begin = moment(availabilityBeginDate, format);

if (today.diff(begin) < 0) {
  console.log(today.format(format) + ' is  before ' +  begin.format(format));
  
} else {
  console.log(today.format(format) + ' is  after ' +  begin.format(format));

}
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"&gt;&lt;/script&gt;

如果你愿意,你可以将所有这些组合在一起,isAfter 方法比 diff 更具语义:

var availabilityBeginDate = '10 10 2017';

if (moment().startOf('day').isAfter(moment(availabilityBeginDate, 'DD MM YYYY'))) {
  console.log('After');

} else {
  console.log('Before');

}
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多