【Java】利用String的compareTo比较两个时期字符串

在《【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的返回值本身没有什么意义,主要是关注这个返回值的正负。


你可能感兴趣的:(java,String,时间,比较,compareTo)