java Calendar 获取某年第几周、某年第几季度、某年某月、某年的开始时间和结束时间

it2024-10-09  35

package com.sptit.isv.modules.reports.utils; import java.sql.Timestamp; import java.util.Calendar; /** * @description: * @author: LiXiang * @create: 2020-10-20 14:48 **/ public class DateRangeUtil { private static Calendar getCalendarForWeek(int year){ Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.set(Calendar.YEAR, year); return cal; } /** * 获取某年第几周的开始日期 * @param year 某年 * @param weekIndex 第几周 * @return 时间戳格式的日期 */ public static Timestamp getStartDateOfWeek(int year,int weekIndex){ Calendar cal = getCalendarForWeek(year); cal.set(Calendar.WEEK_OF_YEAR, weekIndex); return Timestamp.valueOf(getCalendarToTimestapStr(setStarthhmmss(cal))); } /** * 获取某年第几周的结束日期 * @param year 某年 * @param weekIndex 第几周 * @return 时间戳格式的日期 */ public static Timestamp getEndDateOfWeek(int year,int weekIndex){ Calendar cal = getCalendarForWeek(year); cal.set(Calendar.WEEK_OF_YEAR, weekIndex); cal.add(Calendar.DAY_OF_WEEK, 6); return Timestamp.valueOf(getCalendarToTimestapStr(setEndhhmmss(cal))); } private static Calendar getCalendarForMonth(int year, int monthIndex){ Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, monthIndex - 1); cal.set(Calendar.DATE, 1); return cal; } /** * 获取某年某月的开始日期 * @param year 某年 * @param monthIndex 某月 * @return 时间戳格式的日期 */ public static Timestamp getStartDateOfMonth(int year, int monthIndex){ Calendar cal = getCalendarForMonth(year, monthIndex); return Timestamp.valueOf(getCalendarToTimestapStr(setStarthhmmss(cal))); } /** * 获取某年某月的结束日期 * @param year 某年 * @param monthIndex 某月 * @return 时间戳格式的日期 */ public static Timestamp getEndDateOfMonth(int year, int monthIndex){ Calendar cal = getCalendarForMonth(year, monthIndex); int total = cal.getActualMaximum(Calendar.DAY_OF_MONTH); cal.add(Calendar.DAY_OF_MONTH, total - 1); return Timestamp.valueOf(getCalendarToTimestapStr(setEndhhmmss(cal))); } private static Calendar getCalendarForQuarter(int year, int quarterIndex){ int startMonth = (quarterIndex - 1)* 3 + 1; Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, startMonth - 1); cal.set(Calendar.DATE, 1); return cal; } /** * 获取某年第几季度的开始日期 * @param year 某年 * @param quarterIndex 第几季度 * @return 时间戳格式的日期 */ public static Timestamp getStartDateOfQuarter(int year, int quarterIndex){ Calendar cal = getCalendarForQuarter(year, quarterIndex); return Timestamp.valueOf(getCalendarToTimestapStr(setStarthhmmss(cal))); } /** * 获取某年第几季度的结束日期 * @param year 某年 * @param quarterIndex 第几季度 * @return 时间戳格式的日期 */ public static Timestamp getEndDateOfQuarter(int year, int quarterIndex){ Calendar cal = getCalendarForQuarter(year, quarterIndex); cal.add(Calendar.MONTH, 2); int total = cal.getActualMaximum(Calendar.DAY_OF_MONTH); cal.add(Calendar.DAY_OF_MONTH, total - 1); return Timestamp.valueOf(getCalendarToTimestapStr(setEndhhmmss(cal))); } private static Calendar getCalendarForYear(int year){ Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, 0); cal.set(Calendar.DATE, 1); return cal; } /** * 获取某年的开始日期 * @param year 某年 * @return 时间戳格式的日期 */ public static Timestamp getStartDateOfYear(int year){ Calendar cal = getCalendarForYear(year); return Timestamp.valueOf(getCalendarToTimestapStr(setStarthhmmss(cal))); } /** * 获取某年的结束日期 * @param year 某年 * @return 时间戳格式的日期 */ public static Timestamp getEndDateOfYear(int year){ Calendar cal = getCalendarForYear(year); cal.add(Calendar.MONTH, 11); int total = cal.getActualMaximum(Calendar.DAY_OF_MONTH); cal.add(Calendar.DAY_OF_MONTH, total - 1); return Timestamp.valueOf(getCalendarToTimestapStr(setEndhhmmss(cal))); } // 设置 开始时间的 时分秒 private static Calendar setStarthhmmss(Calendar cal){ cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); return cal; } // 设置 开始时间的 时分秒 private static Calendar setEndhhmmss(Calendar cal){ cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); return cal; } // 获取 日历 的 时间戳字符串 (月 需要 +1) private static String getCalendarToTimestapStr(Calendar cal){ String yyyymmdd = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.DAY_OF_MONTH); String hhmmss = cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND); return yyyymmdd + " "+ hhmmss; } }
最新回复(0)