JavaScript,如何使用moment.js创建日期差

时间:2018-07-05 13:17:49

标签: javascript

我在页面上创建错误消息时遇到问题,该页面上有“起始日期:”和“终止日期:”。如果两个日期之间的差值大于或等于60天,则必须输入错误消息。

我正在尝试使用moment.js,这就是我的代码现在的样子。建议在淘汰验证代码中使用它。这就是现在的样子:

var greaterThan60 = (moment().subtract('days', 60) === true) ? "The max range for from/to date is 60 days." : null;

我仍然不确定如何使它大于60天,而不仅仅是60天。这就是老板给我的帮助。

Reference site for moment().subtract

4 个答案:

答案 0 :(得分:0)

moment.js提供了diff()方法来查找日期之间的差异。请检查以下示例。

var fromDate = 20180606;
    var toDate = 20180406;

    var dif = moment(fromDate, 'YYYYMMDD').diff(moment(toDate, 'YYYYMMDD'),'days')
    console.log(dif) // 61

答案 1 :(得分:0)

subtract返回一个新的矩对象。因此,检查true总是返回false。您可以使用rangediff来计算天数差异并检查:

let start = moment('2016-02-27');
let end = moment('2016-03-02');

let range = moment.range(start, end);

let days = range.diff('days');

let error = null;
if (days > 60) {
    error = "The max range for from/to date is 60 days.";
}

答案 2 :(得分:0)

您可以尝试一下。

var date = Date.parse("2018-04-04 00:00:00");
var selectedFromDate = new Date(date);
var todayDate = new Date();
var timedifference = Math.abs(todayDate.getTime() - selectedFromDate.getTime());
var daysDifference = Math.ceil(timedifference/(1000 * 3600 * 24));

仅使用if else循环进行60天以上的验证。

if(daysDifference > 60)
{
    alert("From Date should be less than 2 months");
}

答案 3 :(得分:0)

使用.isSameOrAfter函数比较结束值是否大于或等于开始值加上60天。示例:

var greaterThan60 = toDate.isSameOrAfter(startDate.add(60, 'days'));

其中toDate是您作为时刻对象的结束时间,而startDate是您作为时刻对象的开始时间。如果结束日期大于或等于开始日期的60天,则greaterThan60为真。

参考文献:

isSameOrAfter

add