我有两个文本框。一个包含开始日期,另一个包含结束日期。两个文本框都是dd-MMM-yyyy
日期格式。我的要求是比较这两个日期,如果To日期小于From日期,我必须抛出异常(如果To date< than From Date,我不能继续进行。)
我使用过比较验证器,但它没有用。 所以我尝试使用java脚本进行验证。但是它已经运行了几天。
我把脚本写成:
function ValidateDate() {
var fromdate = document.getElementById("txtStartDate");
var todate = document.getElementById("txtEndDate");
var startDate = fromdate.value;
var endDate = todate.value;
if (endDate < startDate) {
alert("Please ensure that the End Date is greater than or equal to the Start Date.");
return false;
}
}
请你们中的任何一个人为我提供解决方案。提前谢谢。
答案 0 :(得分:1)
在这里使用Jquery可以轻松很多。
var fromdate = document.getElementById("txtStartDate");
var todate = document.getElementById("txtEndDate");
if ($.datepicker.parseDate('dd/mm/yy', fromdate) > $.datepicker.parseDate('dd/mm/yy', todate)) {
alert(fromdate+ 'is greater than ' + todate);
}
检查THIS doccument。
答案 1 :(得分:1)
为了比较两个日期,c#提供了一种比较它们的方法。 DateTime.Compare。它返回一个int值,以检查第一个是早于,等于或晚于第二个。
DateTime date1 = new DateTime(2013, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2013, 8, 1, 12, 0, 0);
int result = DateTime.Compare(date1, date2);
if (result < 0)
{
// date1 is earlier than date2;
}
else if (result == 0)
{
// date1 is the same time as date2
}
else
{
// date1 is later than date2
}
希望它对你有所帮助。
答案 2 :(得分:0)
我假设您需要先将文本框的值转换为Date
,然后才能比较它们。否则,你只是比较他们的词典顺序。
var startDate = Date.parse(fromdate.value);
var endDate = Date.parse(todate.value);
答案 3 :(得分:0)
尝试类似的东西。
function CompareDates(str1,str2)
{
if(str1 == "")
return false;
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,2),10);
var mon2 = parseInt(str2.substring(3,5),10);
var yr2 = parseInt(str2.substring(6,10),10);
mon1 = mon1 -1 ;
mon2 = mon2 -1 ;
var date1 = new Date(yr1, mon1, dt1);
var date2 = new Date(yr2, mon2, dt2);
if(date2 >= date1)
{
return false;
}
else
{
return true;
}
}
答案 4 :(得分:0)
最后,我得到了朋友的解决方案......
我所做的是我将自1970年1月1日00:00:00 UTC以来的日期解析为毫秒。我已经解析了两个日期并比较了这两个值..
它的解决方案是:
function ValidateDate() {
var fromdate = document.getElementById("txtFromDate");
var todate = document.getElementById("txtToDate");
var endDate = todate.value;
var startDate = fromdate.value;
/* Convert the date 01-Jan-1991 to Jan 1, 1991 */
var splitdate = startDate.split("-");
var dt1 = splitdate[1] + " " + splitdate[0] + ", " + splitdate[2];
var splitdate = endDate.split("-");
var dt2 = splitdate[1] + " " + splitdate[0] + ", " + splitdate[2];
var newStartDate = Date.parse(dt1); //Parse the date to milliseconds since January 1, 1970, 00:00:00 UTC
var newEndDate = Date.parse(dt2);
if (newStartDate > newEndDate ) {
alert("Please ensure that the End Date is greater than or equal to the Start Date.");
return false;
}
}