Java提供了很多日期時間相關(guān)的類和方法,可以方便地獲取當(dāng)前日期時間、格式化日期時間和對日期進(jìn)行加減操作。接下來我們講一下根據(jù)月份獲取月初和月末的方法。
public class DateUtil { /** * 獲取指定月份的月初日期 * * @param date 指定月份的任意日期 * @return 指定月份的月初日期 */ public static Date getMonthBegin(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); setDayStart(calendar); return calendar.getTime(); } /** * 獲取指定月份的月末日期 * * @param date 指定月份的任意日期 * @return 指定月份的月末日期 */ public static Date getMonthEnd(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); setDayEnd(calendar); return calendar.getTime(); } /** * 將日期時間設(shè)置為當(dāng)天的開始時間(00:00:00) * * @param calendar 日期時間對象 */ public static void setDayStart(Calendar calendar) { calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); } /** * 將日期時間設(shè)置為當(dāng)天的結(jié)束時間(23:59:59) * * @param calendar 日期時間對象 */ public static void setDayEnd(Calendar calendar) { calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); } }
以上是獲取月初和月末的Java代碼,其中使用了Calendar類操作日期時間。Calendar.getDefault()方法獲取的是當(dāng)前時區(qū)的Calendar實例,Calendar.getInstance()方法獲取的是未指定時區(qū)的Calendar實例。Calendar.DAY_OF_MONTH常量表示日歷中的日期,通過set方法設(shè)置DAY_OF_MONTH來獲取月初和月末的日期。同時,還提供了兩個輔助方法setDayStart和setDayEnd來設(shè)置日期為當(dāng)天的開始時間和結(jié)束時間。