我有一个应用程序,用户可以在其中选择两个日期(起始日期和结束日期),并且日期之间的时间不应超过4个月。用户可以为每个日期选择日期,月份和年份。我是否可以使用某种逻辑来实现此目的,所以如果日期范围超过4个月,则会返回错误。每个输入为整数。例如,开始日期为2019年3月31日为:from_date_day = 31
from_date_month = 3
和from_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 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()
中,然后将该数字除以1000
,60
,60
,最后是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()));