公司讓實現一個自動清除1小時內數據,SQL不熟悉,無奈之下,只能本地DB存儲當前時間+小時去和當前時間進行比對。折騰好半天,突然想到Java提供了一個方法,也是進行字符串比較的,傻眼了。一起來看看吧~
CompareTo()方法簡介
首先,它屬于java.lang.String包下,是Java提供的一個字符串比較的方法,詳情介紹如下:
CompareTo()返回值: int
返回值類型分別有三種,小于0,等于0,大于0
1. 如果字符串相等返回值0;
2. 如果第一個字符和參數的第一個字符不等,結束比較,返回他們之間的差值(ascii碼值)(負值前字符串的值小于后字符串,正值前字符串大于后字符串);
3. 如果第一個字符和參數的第一個字符相等,則以第二個字符和參數的第二個字符做比較,以此類推,直至比較的字符或被比較的字符有一方全比較完,這時就比較字符的長度。
PS:拓展下什么是ascii碼值
ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單字節編碼系統,并等同于國際標準ISO/IEC 646。
說白了ASCII碼就是解決了一個以數字形式表示文本的問題
使用+實踐 二合一
接下來要實現的就是本文開頭說的比較時間。
上代碼~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
System.out.println( "當前時間為:" +getTimeByHour()); System.out.println(getTimeByHour()); System.out.println( "下一小時為:" +getTimeByHour( 1 )); System.out.println( "對比結果為:" +getTimeByHour().compareTo(getTimeByHour( 1 ))); System.out.println( "對比結果為:" +getTimeByHour( 1 ).compareTo(getTimeByHour( 0 ))); System.out.println( "對比結果為:" +getTimeByHour( 1 ).compareTo(getTimeByHour( 1 ))); /** * 獲取當前時間 * @return */ public static String getTimeByHour() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + 0 ); return new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format(calendar.getTime()); } /** * 獲取當前時間后一小時 * @param hour * @return */ public static String getTimeByHour( int hour) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + hour); return new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format(calendar.getTime()); } |
運行結果
1
2
3
4
5
|
當前時間為:2017-03-28 23:42:06 下一小時為:2017-03-29 00:42:06 對比結果為:-1 對比結果為:1 對比結果為:0 |
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/u012400885/article/details/67710909