在《【Java】比对两个以字符串形式表示的时期是否相差超过1天》(
点击打开链接
)曾经介绍过,如果利用字符串的截取来比较两个在数据库中取出来,被特定格式化的日期。然而,这具有一定的局限性,最大的缺点出在截取字符串太复杂太麻烦。
其实可以利用String的compareTo比较两个表示时期的字符串。compareTo原本是这样的:此方法如果这个字符串是等参数字符串那么返回值0,如果这个字符串是按字典顺序小于字符串参数那么返回小于0的值,如果此字符串是按字典顺序大于字符串参数那么一个大于0的值。一般没什么用,地位类似于C语言的strcmp。strcmp是这样比较的:两个字符串,从第一个字符开始比,如果相同,继续向下比,如果不同,看这两个字符的ASCII码,如果第一个字符串的比较大,则返回1,否则返回-1,相同的两个字符串则返回0。
我们可以利用Java中的String的compareTo比较两个时期字符串,
比如如下程序,假设从数据库中取出了date_string_1、2、3、4四个日期字符串,要比较两两的早晚,可以用date_string_1.compareTo(date_string_2)>0来判断。
public class CompareToTest {
public static void main(String[] args) {
String date_string_1 = "2015-09-17 22:50:42";
String date_string_2 = "2015-09-19 23:50:42";
String date_string_3 = "2016-09-19 23:50:42";
String date_string_4 = "2016-09-19 23:50:42";
System.out.println(date_string_1.compareTo(date_string_2));
System.out.println(date_string_3.compareTo(date_string_2));
System.out.println(date_string_3.compareTo(date_string_4));
if (date_string_1.compareTo(date_string_2) > 0) {
System.out.println("日期1比日期2晚");
} else {
System.out.println("日期1比日期2早");
}
}
}
上述运行程序的结果是:
可以看到compareTo的返回值本身没有什么意义,主要是关注这个返回值的正负。
版权声明:本文为yongh701原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。