001package top.cenze.utils; 002 003import cn.hutool.core.util.ObjectUtil; 004 005import java.util.Calendar; 006import java.util.Date; 007 008/** 009 * @desc: 日期转换 010 * https://blog.csdn.net/chengxuyuan_110/article/details/81183922 011 * @author: chengze 012 * @createByDate: 2023/11/14 11:07 013 */ 014public class DateUtil extends cn.hutool.core.date.DateUtil { 015 016 /** 017 * get first date of given month and year 018 * @param year 019 * @param month 020 * @return 021 */ 022 public static String getFirstDayOfMonth(int year, int month){ 023 String monthStr = month < 10 ? "0" + month : String.valueOf(month); 024 return year + "-"+monthStr+"-" +"01"; 025 } 026 027 /** 028 * get the last date of given month and year 029 * @param year 030 * @param month 031 * @return 032 */ 033 public static String getLastDayOfMonth(int year, int month){ 034 Calendar calendar = Calendar.getInstance(); 035 calendar.set(Calendar.YEAR , year); 036 calendar.set(Calendar.MONTH , month - 1); 037 calendar.set(Calendar.DATE , 1); 038 calendar.add(Calendar.MONTH, 1); 039 calendar.add(Calendar.DAY_OF_YEAR , -1); 040 return calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + 041 calendar.get(Calendar.DAY_OF_MONTH); 042 } 043 044 /** 045 * get Calendar of given year 046 * @param year 047 * @return 048 */ 049 public static Calendar getCalendarFormYear(int year){ 050 Calendar cal = Calendar.getInstance(); 051 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 052 cal.set(Calendar.YEAR, year); 053 return cal; 054 } 055 056 /** 057 * 获取指定年份(如:2023),指定周号(如果:第30周)起始日期 058 * get start date of given week no of a year 059 * @param year 060 * @param weekNo 061 * @return yyyy-MM-dd 062 */ 063 public static String getStartDayOfWeekNo(int year, int weekNo){ 064 Calendar cal = getCalendarFormYear(year); 065 cal.set(Calendar.WEEK_OF_YEAR, weekNo); 066 return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + 067 cal.get(Calendar.DAY_OF_MONTH); 068 069 } 070 071 /** 072 * 获取指定年份(如:2023),指定周号(如果:第30周)截止日期 073 * get the end day of given week no of a year. 074 * @param year 075 * @param weekNo 076 * @return yyyy-MM-dd 077 */ 078 public static String getEndDayOfWeekNo(int year, int weekNo){ 079 Calendar cal = getCalendarFormYear(year); 080 cal.set(Calendar.WEEK_OF_YEAR, weekNo); 081 cal.add(Calendar.DAY_OF_WEEK, 6); 082 return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + 083 cal.get(Calendar.DAY_OF_MONTH); 084 } 085 086 public static Date calendar2Date(Calendar calendar) { 087 if (ObjectUtil.isNull(calendar)) { 088 return null; 089 } 090 091 return calendar.getTime(); 092 } 093 094 public static Calendar date2Calendar(Date date) { 095 if (ObjectUtil.isNull(date)) { 096 return null; 097 } 098 099 Calendar calendar = Calendar.getInstance(); 100 calendar.setTime(date); 101 102 return calendar; 103 } 104}