Java中Date類型如何向前向后滾動時間,( 附工具類)


Java中的Date類型向前向后滾動時間(附工具類)

廢話不多說,先看工具類:

 1 import java.text.SimpleDateFormat;
 2 import java.util.Calendar;
 3 import java.util.Date;
 4 
 5 public class DateRoll {
 6 
 7     /**
 8      * Date類型向前向后滾動固定時長
 9      * 
10      * @param date
11      *            調整前的時間對象
12      * @param i
13      *            需要滾動哪一個字段,寫法: 年->Calendar.YEAR 月->Calendar.MONTH
14      *            日->Calendar.DATE 時->Calendar.HOUR_OF_DAY(24小時制)
15      *            分->Calendar.MINUTE 秒->Calendar.SECOND 毫秒->Calendar.MILLISECOND
16      * @param d
17      *            滾動多少,向前(以前)就用負數,向后(未來)就用正數
18      */
19     public static Date dateRoll(Date date, int i, int d) {
20         // 獲取Calendar對象並以傳進來的時間為准
21         Calendar calendar = Calendar.getInstance();
22         calendar.setTime(date);
23         // 將現在的時間滾動固定時長,轉換為Date類型賦值
24         calendar.add(i, d);
25         // 轉換為Date類型再賦值
26         date = calendar.getTime();
27         return date;
28     }
29 
30     public static void main(String[] args) {
31         System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
32                 .format(new Date()));
33         System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
34                 .format(dateRoll(new Date(), Calendar.SECOND, 1)));
35     }
36 }

 1  java中處理時間的類有2個,一個是大家熟知的java.util.Date類,另一個是java.util.Calendar,那么他們有什么區別呢,在早期的java中並沒有Calendar類,后來人們發現了Date類的諸多bug,比如在向前回滾時間的時候,如果是2018-1-2回滾5天就變成了2018-12-28,很明顯這是不對的,不過因為java出現早期定下的規定,JDK開發人員並沒有直接在Date類里面修改,而是加入了更加完善的Calendar類Calendar經過長時間的實際使用,的確是已經證明它的完備性,Calendar還提供了與Date之間的轉換,本文中的滾動方法也是基於這種想法實現的,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM