如何通过仅以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上开发的,所以我对此并不了解。
我该如何解决这个问题。
请建议
提前致谢。
答案 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");