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之間的轉換,本文中的滾動方法也是基於這種想法實現的,