问题描述
|
是否可以检查结束日期是否大于或等于Javascript中的开始日期?我的日期是格式为''dd / mm / yyyy \'的字符串。
解决方法
尝试这个
var startDate = \"05/01/2011\";
var endDate = \"09/01/2011\";
var regExp = /(\\d{1,2})\\/(\\d{1,2})\\/(\\d{2,4})/;
if(parseInt(endDate.replace(regExp,\"$3$2$1\")) > parseInt(startDate.replace(regExp,\"$3$2$1\"))){
alert(\"greater\");
}
,如果字符串格式(\'dd / mm / yyyy \')不变,则此函数应起作用:
function endAfterStart(start,end){
return new Date(start.split(\'/\').reverse().join(\'/\')) <
new Date(end.split(\'/\').reverse().join(\'/\'));
}
alert(endAfterStart(\'05/01/2011\',\'09/01/2011\')); //=> true
或扩展Date.prototype
:
Date.prototype.isBefore = Date.prototype.isBefore || function(dat){
return this < dat;
}
new Date(\'05/01/2011\'.split(\'/\').reverse().join(\'/\'))
.before( new Date(\'09/01/2011\'.split(\'/\').reverse().join(\'/\')) ); //=>true
,最简单的方法来做到这一点。
function endAfterStart(start,end) {
var startDate = new Date(start);
var endDate = new Date(end);
return endDate.getTime() >= startDate.getTime();
}
,function isDate(value)
{
var fromDate = document.getElementById(\"fromDate\").value
var toDate= document.getElementById(\"toDate\").value
//var curr_Date= new SimpleDateFormat(\"dd/mm/yyyy\");
var dateRegEx = null;
dateRegEx = new RegExp(/^(((0[1-9]|[12]\\d|3[01])\\/(0[13578]|1[02])\\/((19|[2-9]\\d)\\d{2}))|((0[1-9]|[12]\\d|30)\\/(0[13456789]|1[012])\\/((19|[2-9]\\d)\\d{2}))|((0[1-9]|1\\d|2[0-8])\\/02\\/((19|[2-9]\\d)\\d{2}))|(29\\/02\\/((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g);
if (dateRegEx.test(fromDate)){
}
else{
alert(\"Invalid from date\");
return false;
}
dateRegEx = new RegExp(/^(((0[1-9]|[12]\\d|3[01])\\/(0[13578]|1[02])\\/((19|[2-9]\\d)\\d{2}))|((0[1-9]|[12]\\d|30)\\/(0[13456789]|1[012])\\/((19|[2-9]\\d)\\d{2}))|((0[1-9]|1\\d|2[0-8])\\/02\\/((19|[2-9]\\d)\\d{2}))|(29\\/02\\/((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g);
if(dateRegEx.test(toDate)) {
}
else{
alert(\"Invalid to date\");
return false;
}
var stDate = new Date(fromDate);
var enDate = new Date(toDate);
var compDate = enDate - stDate;
//var fdate=enDate-curr_Date;
if(compDate >= 0)
return true;
else
{
alert(\"To Date cannot be smaller than From Date\");
return false;
}
/**/
}
这也将适用于Le年。.dd / mm / yyyy格式(没有其他格式)。
,花了我一些时间来查找,但是JQuery用DatePicker
date-range
实现了此确切功能。 (源代码也可以在链接中找到。)
Moment.js还可以使用diff函数很好地处理日期比较。
,查看此功能
function CompareDates()
{
var str1 = document.getElementById(\"Fromdate\").value;
var str2 = document.getElementById(\"Todate\").value;
var dt1 = parseInt(str1.substring(0,2),10);
var mon1 = parseInt(str1.substring(3,5),10);
var yr1 = parseInt(str1.substring(6,10),10);
var dt2 = parseInt(str2.substring(0,10);
var mon2 = parseInt(str2.substring(3,10);
var yr2 = parseInt(str2.substring(6,10);
var date1 = new Date(yr1,mon1,dt1);
var date2 = new Date(yr2,mon2,dt2);
if(date2 < date1)
{
alert(\"To date cannot be greater than from date\");
return false;
}
else
{
alert(\"Submitting ...\");
document.form1.submit();
}
}
,尝试这个,
function isDateCompare(){
var leadDate = document.getElementById(\'strDate\').value;
var closeDate = document.getElementById(\'strDateClosed\').value;
var date1 = new Date();
date1.setFullYear(leadDate.substr(6,4),(leadDate.substr(3,2)-1),leadDate.substr(0,2));
var date2 = new Date();
date2.setFullYear(closeDate.substr(6,(closeDate.substr(3,closeDate.substr(0,2));
if (date1> date2)
{
alert(\"Expected Closed date cannot be less than Lead date.\");
return false;
}
else
{
alert(\"true\");
return false;
}
}
,第一次使用此函数将在js中将字符串转换为Date类型:
function common_getDateFromUI(str) {
var arr = str.split(\"/\");
var returnDate = new Date(arr[2],arr[1] - 1,arr[0],0);
return returnDate;
}
第二:获得javascript日期类型后,只需将其与普通类型进行比较即可,例如date1> date2或date1 == date2。
或使用此功能来获取日期之间的差异日期:
function CalendarDays(startDate,endDate) {
if (endDate < startDate)
return 0;
// Calculate days between dates
var millisecondsPerDay = 86400 * 1000; // Day in milliseconds
startDate.setHours(0,1); // Start just after midnight
endDate.setHours(23,59,999); // End just before midnight
var diff = endDate - startDate; // Milliseconds between datetime objects
var days = Math.round(diff / millisecondsPerDay);
return days;
}
点击此链接是一个简单的演示,可获取日期之间的不同日期。在此处链接演示
,if (iForm.DiddfromDate.value == \"\")
{
alert(\" Please enter a value\");
iForm.DiddfromDate.focus();
return false;
}
if (iForm.DiddtoDate.value == \"\")
{
alert(\" Please enter a value\");
iForm.DiddtoDate.focus();
return false;
}
try {
var d1 = iForm.DiddfromDate.value.substr(0,2);
var m1 = iForm.DiddfromDate.value.substr(3,2);
var y1 = iForm.DiddfromDate.value.substr(6,4);
var StrDate = m1 + \"/\" + d1 + \"/\" + y1;
var d2 = iForm.DiddtoDate.value.substr(0,2);
var m2 = iForm.DiddtoDate.value.substr(3,2);
var y2 = iForm.DiddtoDate.value.substr(6,4);
var EndDate = m2 + \"/\" + d2 + \"/\" + y2;
var startDate = new Date(StrDate);
var endDate = new Date(EndDate);
if (startDate > endDate) {
alert(\'To date should be greater than From date.\');
iForm.DiddfromDate.value = \'\';
iForm.DiddtoDate.value = \'\';
iForm.DiddfromDate.focus();
return false;
}
} catch (e) { alert(e.Description); }
return true;
,只需将字符串转换为日期,然后使用Date对象的getTime
方法进行比较即可。
范例程式码
var startDate = \'04/04/2015\'; //date in dd/mm/yyyy format
var endDate = \'05/04/2015\';
function compareDates(sDate,eDate) {
var dateTime1 = new Date(sDate).getTime(),dateTime2 = new Date(eDate).getTime();
var diff = dateTime2 - dateTime1;
if (diff > 0) {
alert(\"endDate is greater than startDate\");
return true;
}
}
compareDates(startDate,endDate);
工作小提琴