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

Java 取得指定年份第 N 週第一天與相關日期工具類

     編輯:Java 程式設計入門

核心邏輯

使用 java.util.Calendar,設定:

  • setFirstDayOfWeek(Calendar.MONDAY):週一為每週第一天
  • setMinimalDaysInFirstWeek(1):年第一週至少包含 1 天

再以 set(Calendar.WEEK_OF_YEAR, week) + set(Calendar.DAY_OF_WEEK, Calendar.MONDAY) 取得該週週一(第一天)。

完整工具類 DateUtils

public class DateUtils {
    // 取得某日期屬於第幾週
    public static int getWeekOfYear(Date date) { ... }

    // 取得某年總週數
    public static int getMaxWeekNumOfYear(int year) { ... }

    // 取得某年某週第一天(週一)
    public static Date getFirstDayOfWeek(int year, int week) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.WEEK_OF_YEAR, week);
        c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        c.setFirstDayOfWeek(Calendar.MONDAY);
        return c.getTime();
    }

    // 取得某年某週最後一天(週日)
    public static Date getLastDayOfWeek(int year, int week) { ... }

    // 月份、季度、年度首尾日同理,略
}

關鍵細節

  • Calendar.MONTH 從 0 起算,傳入月份需 -1
  • getActualMinimum/Maximum(DAY_OF_MONTH) 自動處理閏年、大小月
  • 季度換算:month = (quarter-1)*3 + 1(首日)、quarter*3(末日)

測試輸出範例

log.info(getFirstDayOfWeek(2013,1)); // Mon Dec 31 00:00:00 CST 2012
log.info(getLastDayOfWeek(2013,1));  // Sun Jan 06 23:59:59 CST 2013
log.info(getFirstDayOfMonth(2013,2)); // Fri Feb 01 00:00:00 CST 2013
log.info(getLastDayOfMonth(2013,2));  // Thu Feb 28 23:59:59 CST 2013
...

此工具類已封裝週/月/季/年首尾日查詢,可直接引入專案使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved