我想比较日期
的字符串if (user_date < date)
日期格式为yyyy-mm-dd
,因此如果用户以此格式输入有效的user_date
,则可以将日期比较为字符串。
不幸的是,用户输入了user_date
,因此它可能无效。如果它无效(或留空),我希望(user_date&lt; date)始终为真。
如果用户的日期无效,我发现设置var user_date='';
。这是为任何有效日期制作(user_date < date)
的好方法吗?
同样的问题是(user_date > date)
(超过任何日期)。
我发现设置var user_date='A';
我需要它
if (date1 <= date && date2>= date)
//do something
因此无需任何其他if then
即可使用。
P.S。我不想进入var user_date='2222-12-31';
,因为algorythm将在不到210年的时间内停止正常运作。
答案 0 :(得分:1)
为什么不将你的分钟设置为0000-01-01而你的最大值设置为9999-12-31?
答案 1 :(得分:1)
我认为这是不可能的。但是可能的是获得一个比较始终为假的日期 - 所以在功能上它的行为与NaN
对数字的行为相同。因此,如果您反转测试,从而将(a <= b)
替换为!(a > b)
,则可以正常工作。
$date = new Date(NaN);
if (!($date1 > $date) && !($date2 < $date)) ...
P.S。美元符号有什么用?您是否在使用PHP或Perl混淆Javascript? :)
答案 2 :(得分:1)
我认为你可以做一些事情
var date = '2013-03-12';
var $date = new Date(date);
function onChange(el){
var user_date = el.value;
var udate = new Date(user_date);
if(isNaN(udate.getTime()) || udate < $date){
alert('less')
}
}
演示:Fiddle
答案 3 :(得分:1)
我个人首先会验证用户输入的日期 - 不要遗漏。
我在这里使用我自己的日期扩展库来做这种事情:
parseFormat()方法可让您轻松验证输入。这样的事情做得很好:
Date.parseFormat(InputString, "YYYY-M-D")
如果输入的字符串与格式匹配,则函数返回有效的JavaScript日期;如果不匹配,则返回null。如果你有一个你想要应用的默认行为,你显然不必根据此发送用户消息 - 但代码本身应该“知道”。
在这种情况下 - 如果您希望无效日期小于另一个已知的良好日期,那么有很多方法可以做到这一点。最简单的是这样的:
InputDate = Date.parseFormat(InputString, "YYYY-M-D");
if ( InputDate || InputDate < GoodDate ) {
Input Date is Invalid or Falls before good date
} else {
Input Date is Falls after good date
};
您无需设置“虚假日期”或使用正确的验证和布尔逻辑进行猜测,它将一直有效,直到世界停止旋转(理论上)。
您可以使用库中的compare()方法进行任何比任何精度更大/更小的比较。
希望这有帮助。