1. 程式人生 > >(八)Java日期工具類DateUtils詳解(一)

(八)Java日期工具類DateUtils詳解(一)

一、 對指定的日期新增年、月、周、日、小時、分鐘、秒、毫秒

  • public static Date addDays(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
        date = DateUtils.addDays(date, 1);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"
));

結果是:

2018-01-23 11:53:49
2018-01-24 11:53:49這裡寫程式碼片
說明:向返回新物件日期新增若干天,原始日期不變;
引數:date-日期,可能為空;amount-新增的量可能為復值;
返回值:返回一個新日期,原始日期不變;
丟擲異常:IllegalArgumentException,如果日期為null;
  • public static Date addHours(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date
, "yyyy-MM-dd HH:mm:ss")); date = DateUtils.addHours(date, 1); System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));

結果:

2018-01-23 11:58:26
2018-01-23 12:58:26
    說明:向新返回日期物件新增若干小時,原始日期不變;
    引數:date-日期,可能為空;amount-新增的量可能為復值;
    返回值:返回一個新日期,原始日期不變;
    丟擲異常:IllegalArgumentException,如果日期為null;
  • public static Date addMinutes(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
        date = DateUtils.addMinutes(date, 1);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));

結果:

2018-01-23 13:04:05
2018-01-23 13:05:05
    說明:向新返回日期物件新增若干分鐘,原始日期不變;
    引數:date-日期,可能為空;amount-新增的量可能為復值;
    返回值:返回一個新日期,原始日期不變;
    丟擲異常:IllegalArgumentException,如果日期為null;
  • public static Date addSeconds(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));
        date = DateUtils.addSeconds(date, 1);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss"));

結果:

2018-01-23 13:06:42
2018-01-23 13:06:43
    說明:向新返回日期物件新增若干秒,原始日期不變;
    引數:date-日期,可能為空;amount-新增的量可能為復值;
    返回值:返回一個新日期,原始日期不變;
    丟擲異常:IllegalArgumentException,如果日期為null;
  • public static Date addMilliseconds(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.addMilliseconds(date, 1);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:10:26:579
2018-01-23 13:10:26:580
    說明:向新返回日期物件新增若干毫秒,原始日期不變;
    引數:date-日期,可能為空;amount-新增的量可能為復值;
    返回值:返回一個新日期,原始日期不變;
    丟擲異常:IllegalArgumentException,如果日期為null;
  • public static Date addYears(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.addYears(date, 1);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:12:44:742
2019-01-23 13:12:44:742
    說明:向新返回日期物件新增若干年,原始日期不變;
    引數:date-日期,可能為空;amount-新增的量可能為復值;
    返回值:返回一個新日期,原始日期不變;
    丟擲異常:IllegalArgumentException,如果日期為null;
  • public static Date addMonths(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.addMonths(date, 1);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:14:13:354
2018-02-23 13:14:13:354
    說明:向新返回日期物件新增若干年,原始日期不變;
    引數:date-日期,可能為空;amount-新增的量可能為復值;
    返回值:返回一個新日期,原始日期不變;
    丟擲異常:IllegalArgumentException,如果日期為null;
  • public static Date addWeeks(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.addWeeks(date, 1);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:15:21:608
2018-01-30 13:15:21:608
    說明:向新返回日期物件新增若干周,原始日期不變;
    引數:date-日期,可能為空;amount-新增的量可能為復值;
    返回值:返回一個新日期,原始日期不變;
    丟擲異常:IllegalArgumentException,如果日期為null;

二、設定日期中年、月、日、時、分、秒、毫秒值為指定的數字值

  • public static Date setYears(Date date,int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.setYears(date, 2015);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:24:13:838
2015-01-23 13:24:13:838
說明:設定日期中年欄位並返回一個新的日期物件,原始日期值不變;
引數:date-日期,不能為null;amount-設定的值,非負值;
返回:一個新的日期物件;
丟擲異常:IllegalArgumentException,如果日期為null或者負值;
  • public static Date setMonths(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.setMonths(date, 11);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:30:28:161
2018-12-23 13:30:28:161
說明:設定日期中月欄位並返回一個新的日期物件,原始日期值不變;
引數:date-日期,不能為null;amount-設定的值,非負值,且值為0—11;
返回:一個新的日期物件;
丟擲異常:IllegalArgumentException,如果日期為null或者負值;
  • public static Date setDays(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.setDays(date, 11);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:33:41:587
2018-01-11 13:33:41:587
說明:設定日期中日欄位並返回一個新的日期物件,原始日期值不變;
引數:date-日期,不能為null;amount-設定的值,非負值,且值為0到當月最大天數;
返回:一個新的日期物件;
丟擲異常:IllegalArgumentException,如果日期為null或者負值;
  • public static Date setHours(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.setHours(date, 16);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:36:01:860
2018-01-23 16:36:01:860
說明:設定日期中小時欄位並返回一個新的日期物件,原始日期值不變;
引數:date-日期,不能為null;amount-設定的值,非負值,且值為0到23;
返回:一個新的日期物件;
丟擲異常:IllegalArgumentException,如果日期為null或者負值;
  • public static Date setMinutes(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.setMinutes(date, 16);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:37:28:681
2018-01-23 13:16:28:681
說明:設定日期中分鐘欄位並返回一個新的日期物件,原始日期值不變;
引數:date-日期,不能為null;amount-設定的值,非負值,且值為0到59;
返回:一個新的日期物件;
丟擲異常:IllegalArgumentException,如果日期為null或者負值;
  • public static Date setSeconds(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.setSeconds(date, 10);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:39:19:946
2018-01-23 13:39:10:946
說明:設定日期中秒欄位並返回一個新的日期物件,原始日期值不變;
引數:date-日期,不能為null;amount-設定的值,非負值,且值為0到59;
返回:一個新的日期物件;
丟擲異常:IllegalArgumentException,如果日期為null或者負值;
  • public static Date setMilliseconds(Date date, int amount)
        Date date = new Date();
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));
        date = DateUtils.setMilliseconds(date, 10);
        System.out.println(DateUtil.dateToString(date, "yyyy-MM-dd HH:mm:ss:SSS"));

結果:

2018-01-23 13:40:38:666
2018-01-23 13:40:38:010
說明:設定日期中毫秒欄位並返回一個新的日期物件,原始日期值不變;
引數:date-日期,不能為null;amount-設定的值,非負值,且值為0到999;
返回:一個新的日期物件;
丟擲異常:IllegalArgumentException,如果日期為null或者負值;

三、檢查日期是否相同

  • public static boolean isSameDay(Date date1, Date date2)
        Date date1 = new Date();
        Date date2 = new Date();
        System.out.println(DateUtils.isSameDay(date1, date2));

結果:

true
說明:檢查兩個日期物件是否同一天忽略時間(28 Mar 2002 13:45 and 28 Mar 2002 06:01 would return true. 28 Mar 2002 13:45 and 12 Mar 2002 13:45 would return false.);
引數:date1-第一個引數,不能改變,非空;date2-第二個引數,不能改變,非空;
返回值:true,如果兩個日期在同一天;
丟擲異常:IllegalArgumentException如果有一個日期為null;
  • public static boolean isSameDay(Calendar cal1, Calendar cal2)
        Calendar cal1 = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();
        System.out.println(DateUtils.isSameDay(cal1, cal2));

結果:

true
說明:檢查兩個日期物件是否同一天忽略時間(28 Mar 2002 13:45 and 28 Mar 2002 06:01 would return true. 28 Mar 2002 13:45 and 12 Mar 2002 13:45 would return false);
引數:date1-第一個引數,不能改變,非空;date2-第二個引數,不能改變,非空;
返回值:true,如果兩個日期在同一天;
丟擲異常:IllegalArgumentException如果有一個日期為null;
  • public static boolean isSameInstant(Date date1, Date date2)
        Date date1 = new Date();
        date1 = DateUtils.addMinutes(date1, 23);
        Date date2 = new Date();
        System.out.println(DateUtils.isSameInstant(date1, date2));

結果:

false
說明:檢查兩個日期物件是否代表同一時刻,此方法比較兩個日期精確到毫秒數;
引數:date1-第一個引數,不能改變,非空;date2-第二個引數,不能改變,非空;
返回值:true,如果兩個日期代表相同的毫秒時刻;
丟擲異常:IllegalArgumentException如果有一個日期為null;
  • public static boolean isSameInstant(Calendar cal1, Calendar cal2)
        Calendar cal1 = Calendar.getInstance();
        Date date3 = DateUtils.addHours(cal1.getTime(), 12);
        cal1.setTime(date3);
        Calendar cal2 = Calendar.getInstance();
        System.out.println(DateUtils.isSameInstant(cal1, cal2));

結果:

false
說明:檢查兩個日期物件是否代表同一時刻,此方法比較兩個日期精確到毫秒數;
引數:date1-第一個引數,不能改變,非空;date2-第二個引數,不能改變,非空;
返回值:true,如果兩個日期代表相同的毫秒時刻;
丟擲異常:IllegalArgumentException如果有一個日期為null;
  • public static boolean isSameLocalTime(Calendar cal1,Calendar cal2)
        Calendar cal1 = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();

        System.out.println(DateUtils.isSameLocalTime(cal1, cal2));

結果:

true
說明:檢查兩個日曆物件是否表示相同的本地時間,此方法比較兩個物件的欄位值,另外兩個日曆必須為同一型別的日曆;
引數:cal1-第一個引數,不能改變,非空;cal2-第二個引數,不能改變,非空;
返回值:true,如果兩個日期代表相同的毫秒時刻;
丟擲異常:IllegalArgumentException如果有一個日期為null;