如何检查两个日期之间的时间是否超过一定的月份数?

问题描述 投票:1回答:1

我有一个应用程序,用户可以在其中选择两个日期(起始日期和结束日期),并且日期之间的时间不应超过4个月。用户可以为每个日期选择日期,月份和年份。我是否可以使用某种逻辑来实现此目的,所以如果日期范围超过4个月,则会返回错误。每个输入为整数。例如,开始日期为2019年3月31日为:from_date_day = 31 from_date_month = 3from_date_year = 2019

例如,我这样的工作会很不错:

((Math.abs($('#to_date_month').val() - $('#from_date_month').val()) > 2) && $('#from_date_day').val() <= $('#to_date_day').val()
  return "error"

此代码的问题是,当日期跨越两个不同的年份时,它将不起作用。我正在使用coffeescript,但是jquery或js中的解决方案也可以。

javascript jquery coffeescript
1个回答
0
投票

我建议创建这两个日期的两个Javascript Date对象。这可以通过向Date对象的构造函数提供年份,月份和最后一天来完成。

例如

var startDate = new Date(2019, 1, 16); // January the 16th
var endDate = new Date(2019, 3, 30); // March the 30th

使用Date对象的.getTime()函数,您可以获取自1.1.1970起经过的毫秒数。如果计算这两个数字之间的差,请将其包装在Math.abs()中,然后将该数字除以10006060,最后是24,就可以得到天数。如果此数字大于〜120,则范围超过四个月。

console.log(Math.abs(startDate.getTime() - endDate.getTime()) / 1000/60/60/24);

在您的用例中,Date对象可以这样设置:

var startDate = new Date(parseInt($('#from_date_year').val()), parseInt($('#from_date_month').val()), parseInt($('#from_date_day').val()));
© www.soinside.com 2019 - 2024. All rights reserved.