首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 日期時間工具類:常用獲取指定日期方法總結

     編輯:Java 相關知識

核心工具類 TimeTest

封裝了基於 Calendar、SimpleDateFormat 的豐富靜態/實例方法,涵蓋:

  • 當前時間格式化:getNowTime("yyyy-MM-dd")
  • 本週一/週日、上週一/週日、下週一/週日
  • 本月第一天/最後一天、上月/下月首尾
  • 本年第一天/最後一天、去年/明年首尾
  • 本季度起止日期
  • 兩日期間天數差:getTwoDay("2008-12-1","2008-9-29")
  • 指定月份偏移:getAfterMonth(6)
  • 判斷閏年、獲取月最大天數

關鍵方法實現片段

獲取本週一

public String getMondayOFWeek() {
    weeks = 0;
    int mondayPlus = getMondayPlus();
    GregorianCalendar currentDate = new GregorianCalendar();
    currentDate.add(GregorianCalendar.DATE, mondayPlus);
    Date monday = currentDate.getTime();
    return DateFormat.getDateInstance().format(monday);
}

private int getMondayPlus() {
    Calendar cd = Calendar.getInstance();
    int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 週一為首日
    return (dayOfWeek == 1) ? 0 : 1 - dayOfWeek;
}

獲取月最後一天

public String getDefaultDay() {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Calendar lastDate = Calendar.getInstance();
    lastDate.set(Calendar.DATE, 1);
    lastDate.add(Calendar.MONTH, 1);
    lastDate.add(Calendar.DATE, -1);
    return sdf.format(lastDate.getTime());
}

日期差計算

public static String getTwoDay(String sj1, String sj2) {
    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
    long day = 0;
    try {
        Date date = fmt.parse(sj1);
        Date mydate = fmt.parse(sj2);
        day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
    } catch (Exception e) { return ""; }
    return day + "";
}

使用示例

TimeTest tt = new TimeTest();
System.out.println("本週一:" + tt.getMondayOFWeek());
System.out.println("本月最後一天:" + tt.getDefaultDay());
System.out.println("6個月後:" + TimeTest.getAfterMonth(6));
System.out.println("日期差天數:" + TimeTest.getTwoDay("2008-12-1","2008-9-29"));

注意事項

  • 代碼基於 java.util.Date/Calendar(Java 7 風格),Java 8+ 建議改用 java.time 套件(LocalDate、Period、TemporalAdjusters)更簡潔線程安全。
  • 工具類中 weeks 為實例變數,多線程環境下需注意狀態污染,建議改為局部變數或無狀態設計。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved