Javascript:始终小于任何其他日期的最小日期

Javascript:始终小于任何其他日期的最小日期,javascript,string,date,compare,Javascript,String,Date,Compare,我想比较日期字符串 if (user_date < date) 因此它可以在没有任何附加的情况下工作 另外,我不想输入var user_date='2222-12-31'因为算法将在不到210年内停止正常工作。为什么不将最小值设置为0000-01-01,最大值设置为9999-12-31?为什么不将最小值设置为0000-01-01,最大值设置为9999-12-31?我认为这是不可能的。但可能得到的是一个日期,它的比较结果总是错误的——因此在功能上它的行为与NaN对数字的行为相同。因此,如果

我想比较日期字符串

if (user_date < date)
因此它可以在没有任何附加
的情况下工作


另外,我不想输入
var user_date='2222-12-31'因为算法将在不到210年内停止正常工作。

为什么不将最小值设置为0000-01-01,最大值设置为9999-12-31?

为什么不将最小值设置为0000-01-01,最大值设置为9999-12-31?

我认为这是不可能的。但可能得到的是一个日期,它的比较结果总是错误的——因此在功能上它的行为与
NaN
对数字的行为相同。因此,如果您反转测试,从而替换
(a b)
,它将工作

$date = new Date(NaN);
if (!($date1 > $date) && !($date2 < $date))  ...
$date=新日期(NaN);
如果(!($date1>$date)和($date2<$date))。。。

p、 美元符号是怎么回事?您是否将Javascript与PHP或Perl混淆了?:)

我认为这是不可能的。但可能得到的是一个日期,它的比较结果总是错误的——因此在功能上它的行为与
NaN
对数字的行为相同。因此,如果您反转测试,从而替换
(a b)
,它将工作

$date = new Date(NaN);
if (!($date1 > $date) && !($date2 < $date))  ...
$date=新日期(NaN);
如果(!($date1>$date)和($date2<$date))。。。

p、 美元符号是怎么回事?您是否将Javascript与PHP或Perl混淆了?:)

我想你可以做点什么

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')
    }

}
var日期='2013-03-12';
var$日期=新日期(日期);
功能更改(el){
var user_date=el.value;
var udate=新日期(用户日期);
if(isNaN(udate.getTime())| | udate<$date){
警报(“更少”)
}
}

演示:

我想你可以做些小动作

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')
    }

}
var日期='2013-03-12';
var$日期=新日期(日期);
功能更改(el){
var user_date=el.value;
var udate=新日期(用户日期);
if(isNaN(udate.getTime())| | udate<$date){
警报(“更少”)
}
}

演示:

就我个人而言,我会首先验证用户输入的日期-不要让它成为偶然

我在这里使用自己的日期扩展库来处理这类内容:

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
};
InputDate=Date.parseFormat(InputString,“YYYY-M-D”);
如果(InputDate | | InputDate
你不需要设置“假日期”或猜测正确的验证和布尔逻辑,它将一直工作到世界停止旋转(理论上)

您可以使用库中的compare()方法对任何精度进行任何类型的大于/小于比较


希望这能有所帮助。

我个人会首先验证用户输入的日期-不要让它成为偶然

我在这里使用自己的日期扩展库来处理这类内容:

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
};
InputDate=Date.parseFormat(InputString,“YYYY-M-D”);
如果(InputDate | | InputDate
你不需要设置“假日期”或猜测正确的验证和布尔逻辑,它将一直工作到世界停止旋转(理论上)

您可以使用库中的compare()方法对任何精度进行任何类型的大于/小于比较



希望这有帮助。

为什么不直接使用javascript日期,比如
新日期($userdate)
然后比较日期您可以先验证日期,然后检查它是否大于…@TheBronx:我不想添加额外的验证。另外两个if/else将复制相同的代码。@Arun P Johny抱歉。你建议我连接一些.js库吗?你想要什么样的库?为什么不直接使用javascript日期,比如
new date($userdate)
,然后比较日期你可以先验证日期,然后检查它是否更大…@TheBronx:我不想添加额外的验证。另外两个if/else将复制相同的代码。@Arun P Johny抱歉。你建议我连接一些.js库吗?你想要什么样的库我同意0000-01-01。那么9999-12-31呢,这个日期总有一天会过去。是的,但是会有一种新的日期格式被发明出来,我们都会退休:)为什么在这种情况下,与“a”相比更糟糕?“9999-12-31”之前的任何日期都小于“A”。:)此外,您将看到我的代码也适用于“10000-01-01!”:)与“A”比较会起作用,但对于将来可能查看此代码的任何其他人来说都是相当模糊的。与有效的日期字符串相比,可以更清楚地了解发生了什么。如果您在几年后回来修改此代码,您自己可能会更清楚。我同意0000-01-01。那么9999-12-31呢,那个日期会过一天。是的,但会有一个新的日期格式