如何比较两个时间字符串的大小

方式一、后台

现在有两个字符串,是从表单读取来的日期性,“2003-10-12”与“2003-10-21”,
现在如何判断他们的大小。

如果不想再转为date类型比较

有一种简单的方法

String a="2003-10-12";
String b="2003-10-21";
int result=a.compareTo(b);
if (result==0)
out.print("a=b");
else if (result < 0 )
out.print("a<b");
else out.print("a>b");

使用String类中的compareTo()方法比较。如:s1.compareTo(s2)
但是这个方法有个缺点,就是要求两个参与比较的字符串的形式及长度必须相同才能够正确比较,否则,比较结果是错的.
例如:
s1 = "02";
s2 = "12";
这样比较是正确的.
但如果是下面的样子,
s1 = "2";
s2 = "12";
比较结果是错误的的

转自http://www.cnblogs.com/xiaomuv587/archive/2012/12/21/2828106.html

 

方式二、js

 

<html>   
<head>   
<title>calendar-比较时间和日期大小-www.jb51.net</title>   
<script type="text/javascript" src="CalendarFramework.js"></script>   
</head>   
<body>   
开始时间:<input onfocus="setday(this)" id="startTime" name="startTime">到     
结束时间:<input onfocus="setday(this)" id="endTime" name="endTime">   
          <input type="button" onclick="checkTime()" value="校验"/>   
          </body>   
<script type="text/javascript" >   
checkTime = function() {   
    var startTime = document.getElementById("startTime").value;   
    var endTime = document.getElementById("endTime").value;   
    compareCalendar(startTime, endTime);         
}   
//比较日前大小  
function compareDate(checkStartDate, checkEndDate) {      
    var arys1= new Array();      
    var arys2= new Array();      
if(checkStartDate != null && checkEndDate != null) {      
    arys1=checkStartDate.split('-');      
      var sdate=new Date(arys1[0],parseInt(arys1[1]-1),arys1[2]);      
    arys2=checkEndDate.split('-');      
    var edate=new Date(arys2[0],parseInt(arys2[1]-1),arys2[2]);      
if(sdate > edate) {      
    alert("日期开始时间大于结束时间");         
    return false;         
}  else {   
    alert("通过");   
    return true;      
    }   
    }      
}     

//判断日期,时间大小  
function compareTime(startDate, endDate) {   
 if (startDate.length > 0 && endDate.length > 0) {   
    var startDateTemp = startDate.split(" ");   
    var endDateTemp = endDate.split(" ");   

    var arrStartDate = startDateTemp[0].split("-");   
    var arrEndDate = endDateTemp[0].split("-");   

    var arrStartTime = startDateTemp[1].split(":");   
    var arrEndTime = endDateTemp[1].split(":");   

var allStartDate = new Date(arrStartDate[0], arrStartDate[1], arrStartDate[2], arrStartTime[0], arrStartTime[1], arrStartTime[2]);   
var allEndDate = new Date(arrEndDate[0], arrEndDate[1], arrEndDate[2], arrEndTime[0], arrEndTime[1], arrEndTime[2]);   

if (allStartDate.getTime() >= allEndDate.getTime()) {   
        alert("startTime不能大于endTime,不能通过");   
        return false;   
} else {   
    alert("startTime小于endTime,所以通过了");   
    return true;   
       }   
} else {   
    alert("时间不能为空");   
    return false;   
      }   
}   
//比较日期,时间大小  
function compareCalendar(startDate, endDate) {   
if (startDate.indexOf(" ") != -1 && endDate.indexOf(" ") != -1 ) {   
    //包含时间,日期  
        compareTime(startDate, endDate);               
} else {   
    //不包含时间,只包含日期  
    compareDate(startDate, endDate);   
      }   
}   
</script>   
</html> 
js

 

转自http://www.jb51.net/article/45560.htm

 

转载于:https://www.cnblogs.com/H2921306656/p/6141634.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值