检查日期是否大于指定日期

时间:2016-07-13 06:49:01

标签: javascript

如何通过仅以MMM-YYYY格式传递月份和年份,使用javascript检查日期是否大于或小于指定日期。

例如:

让用户从月份下拉菜单中选择 JUL ,从年份下拉菜单中选择 2016

现在如何检查所选值是否大于/小于 2016年6月。

我已将会话变量中的输入作为会话("月"),会话(" yrs")。

我尝试过以下但没有任何反应:

var d1 = new Date('JUN-2016')
var d2 = new Date(<% =session("month")+"-"+session("yrs") %>) )
if(d2.getTime() > d2.getTime())
{
alert('Greater than jun 2016');
}
else
{
alert('Less than jun 2016');
}

我已经浏览了这个链接Compare two dates with JavaScript,但没有找到解决方案。

由于这个应用程序是在VB上开发的,所以我对此并不了解。

我该如何解决这个问题。

请建议

提前致谢。

4 个答案:

答案 0 :(得分:0)

试试这个 -

var x = new Date('JUN-2016');
var y = new Date('MAY-2016');
console.log(+x < +y);
console.log(+x > +y);
console.log(+x === +y);

答案 1 :(得分:0)

你只需要做一个简单的日期比较。请在此处详细了解“日期”:http://www.w3schools.com/js/js_date_methods.asp

也许这段代码可能会有所帮助:

var day = 1; // Since you don't care about the day just use the first day
var month = session("month"); // Use the number of the month instead of the name
var year = session("yrs");
var dateJune = Date.parse("2016-07-01"); // June
var dateInput = Date.parse(year + "-" + month + "-" + day);
// Compare dates
if (dateJune > dateInput) {
    // The input is before june
} else if (dateJune < dateInput) {
    // The input is after june
} else {
    // It is june
}

您需要有效的日期格式才能解析日期。而不是从您的选择框中获得“JUN”,而不是获得月份的数量。选择框应如下所示:

<select>
<option value="01">Jan</option>
<option value="02">Feb</option>
...
</select>

如果这不是一个选项,你可以使用一个为你计算数字的函数,如果你知道你的月变量可能有的字符串值:

function (nameOfMonth) {
   switch (nameOfMonth) {
     case 'Jan':
        return "01";
     case 'Feb':
        return "02";
     ....
   }
}

答案 2 :(得分:0)

首先将其转换为日期对象

  // convert to a parseable date string:
   var dateStrA = "28/12/2013 16:20:22".replace( /(\d{2})\/(\d{2})\/(\d{4})/,        "$2/$1/$3");
    var dateStrB = "28/12/2013 16:20:11".replace( /(\d{2})\/(\d{2})\/(\d{4})/,        "$2/$1/$3");

     // now you can compare them using:
      new Date(dateStrA) > new Date(dateStrB);

答案 3 :(得分:0)

var date1 = Math.ceil(Math.abs(first date) / (1000 * 3600 * 24));
var date2 = Math.ceil(Math.abs(second date) / (1000 * 3600 * 24));
if(date1  > date2 )
   alert("date1");
else
   alert("date2");