【发布时间】:2010-09-25 04:56:09
【问题描述】:
我想在 javascript 中比较两个日期。我一直在做一些研究,但我能找到的只是如何返回当前日期。我想比较与今天无关的 2 个不同的日期。我怎么做。
var startDate = Date(document.form1.Textbox2);
【问题讨论】:
标签: javascript datetime
我想在 javascript 中比较两个日期。我一直在做一些研究,但我能找到的只是如何返回当前日期。我想比较与今天无关的 2 个不同的日期。我怎么做。
var startDate = Date(document.form1.Textbox2);
【问题讨论】:
标签: javascript datetime
if (date1.getTime() > date2.getTime()) {
alert("The first date is after the second date!");
}
【讨论】:
date1 > date2,也就是说,没有getTime()部分。有人知道其他浏览器吗?
new Date('1945/05/09').valueOf() < new Date('2011/05/09').valueOf()
【讨论】:
JavaScript 的日期可以使用与其他数据类型相同的比较运算符进行比较:>、=、==、!=、===、!==。
如果你有两个日期 A 和 B,那么 A
但听起来您遇到的麻烦是将字符串转换为日期。您只需将字符串作为新日期的参数传递即可:
var someDate = new Date("12/03/2008");
或者,如果您想要的字符串是表单字段的值,看起来可能是:
var someDate = new Date(document.form1.Textbox2.value);
如果该字符串不是 JavaScript 识别为日期的字符串,您仍然会得到一个 Date 对象,但它将是“无效的”。与另一个日期的任何比较都将返回 false。当转换为字符串时,它将变为“无效日期”。它的 getTime() 函数将返回 NaN,在日期本身调用 isNaN() 将返回 true;这是检查字符串是否为有效日期的简单方法。
【讨论】:
?(new Date('1995-02-04T24:00') == new Date('1995-02-05T00:00')); false 但?(new Date('1995-02-04T24:00').getTime() == new Date('1995-02-05T00:00').getTime()); true
您可以在 Date 对象上使用 getTime() 方法来获取相对于 1970 年 1 月 1 日的时间戳(以毫秒为单位)。如果将两个日期转换为整数时间戳,则可以通过减去它们来比较差异。结果将以毫秒为单位,因此您只需除以 1000 秒,然后除以 60 分钟,等等。
【讨论】:
我宁愿使用 Date valueOf 方法而不是 === 或 !==
似乎 === 正在比较内部对象的引用,而与日期无关。
【讨论】:
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
}
【讨论】:
a/b.getMonth() 会导致一月(即0)变为1,这会将二月转换为Date.UTC 方法。请参阅 mdn 文章:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。关于month 参数可接受值的部分。例如,尝试使用您的函数比较日期“2/1/2017”和“1/31/2017”。
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";
}
}
}
【讨论】:
您可以尝试使用此代码检查两个日期中哪个日期值最高,格式为 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 像这样。 */
【讨论】:
您可以尝试添加以下脚本代码来实现:
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;
}
【讨论】: