我想在javascript中比较两个日期。我一直在做一些研究,但我能找到的是如何返回当前日期。我想比较两个不同的日期,与今天无关。我怎么做。
var startDate = Date(document.form1.Textbox2);
答案 0 :(得分:216)
if (date1.getTime() > date2.getTime()) {
alert("The first date is after the second date!");
}
答案 1 :(得分:15)
new Date('1945/05/09').valueOf() < new Date('2011/05/09').valueOf()
答案 2 :(得分:10)
可以使用其他数据类型使用的相同比较运算符来比较JavaScript的日期:&gt;,&lt;,&lt; =,&gt; =,==,!=,===,!==。
如果你有两个日期A和B,那么A&lt; B如果A比B更进一步回到过去。
但听起来你遇到的麻烦就是将字符串变成日期。您只需将字符串作为新日期的参数传递即可:
var someDate = new Date("12/03/2008");
或者,如果你想要的字符串是表单字段的值,它似乎可能是:
var someDate = new Date(document.form1.Textbox2.value);
如果该字符串不是JavaScript识别为日期的字符串,您仍将获得Date对象,但它将“无效”。与其他日期的任何比较都将返回false。转换为字符串时,它将变为“无效日期”。它的getTime()函数将返回NaN,并且在日期本身调用isNaN()将返回true;这是检查字符串是否为有效日期的简便方法。
答案 3 :(得分:4)
您可以在Date对象上使用getTime()方法来获取相对于1970年1月1日的时间戳(以毫秒为单位)。如果将两个日期转换为整数时间戳,则可以通过减去它们来比较差异。结果将以毫秒为单位,因此您只需将1000除以秒,然后将60除以分钟等等。
答案 4 :(得分:2)
我宁愿使用Date valueOf方法而不是===或!==
似乎===正在比较内部对象的引用,而没有关于日期的内容。
答案 5 :(得分:1)
function fn_DateCompare(DateA, DateB) { // this function is good for dates > 01/01/1970
var a = new Date(DateA);
var b = new Date(DateB);
var msDateA = Date.UTC(a.getFullYear(), a.getMonth()+1, a.getDate());
var msDateB = Date.UTC(b.getFullYear(), b.getMonth()+1, b.getDate());
if (parseFloat(msDateA) < parseFloat(msDateB))
return -1; // lt
else if (parseFloat(msDateA) == parseFloat(msDateB))
return 0; // eq
else if (parseFloat(msDateA) > parseFloat(msDateB))
return 1; // gt
else
return null; // error
}
答案 6 :(得分:0)
您可以尝试添加以下脚本代码来实现此目的:
if(CompareDates(smallDate,largeDate,'-') == 0) {
alert('Selected date must be current date or previous date!');
return false;
}
function CompareDates(smallDate,largeDate,separator) {
var smallDateArr = Array();
var largeDateArr = Array();
smallDateArr = smallDate.split(separator);
largeDateArr = largeDate.split(separator);
var smallDt = smallDateArr[0];
var smallMt = smallDateArr[1];
var smallYr = smallDateArr[2];
var largeDt = largeDateArr[0];
var largeMt = largeDateArr[1];
var largeYr = largeDateArr[2];
if(smallYr>largeYr)
return 0;
else if(smallYr<=largeYr && smallMt>largeMt)
return 0;
else if(smallYr<=largeYr && smallMt==largeMt && smallDt>largeDt)
return 0;
else
return 1;
}
答案 7 :(得分:0)
您可以尝试使用此代码检查两个日期中哪个日期值最高,格式为MM / DD / YYYY:
function d_check() {
var dl_sdt=document.getElementIdBy("date_input_Id1").value; //date one
var dl_endt=document.getElementIdBy("date_input_Id2").value; //date two
if((dl_sdt.substr(6,4)) > (dl_endt.substr(6,4))) {
alert("first date is greater");
return false;
}
else if((((dl_sdt.substr(0,2)) > (dl_endt.
substr(0,2)))&&(frdt(dl_sdt.substr(3,2)) > (dl_endt.substr(3,2))))||
(((dl_sdt.substr(0,2)) > (dl_endt.substr(0,2)))&&
((dl_sdt.substr(3,2)) < (dl_endt.substr(3,2))))||
(((dl_sdt.substr(0,2)) == (dl_endt.substr(0,2)))&&((dl_sdt.substr(3,2)) >
(dl_endt.substr(3,2))))) {
alert("first date is greater");
return false;
}
alert("second date is digher");
return true;
}
/ *用于检查此....创建一个表单并将id提供给两个日期输入。日期格式应为mm / dd / yyyy或mm-dd-yyyy或mm:dd:yyyy或mm.dd. yyyy喜欢这个。 * /
答案 8 :(得分:0)
function validateform()
{
if (trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value) != "") {
if (!isDate(trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value)))
msg = msg + "<li>Please enter valid From Date in mm/dd/yyyy format\n";
else {
var toDate = new Date();
var txtdate = document.getElementById("<%=txtFromDate.ClientID %>").value;
var d1 = new Date(txtdate)
if (Date.parse(txtdate) > Date.parse(toDate)) {
msg = msg + "<li>From date must be less than or equal to today's date\n";
}
}
}
if (trimAll(document.getElementById("<%=txtToDate.ClientID %>").value) != "") {
if (!isDate(trimAll(document.getElementById("<%=txtToDate.ClientID %>").value)))
msg = msg + "<li>Please enter valid To Date in mm/dd/yyyy format\n";
else {
var toDate = new Date();
var txtdate = document.getElementById("<%=txtToDate.ClientID %>").value;
var d1 = new Date(txtdate)
if (Date.parse(txtdate) > Date.parse(toDate)) {
msg = msg + "<li>To date must be less than or equal to today's date\n";
}
}
}