不 定 时 更 新 ~
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @Author: zhangximing
* @Email: 530659058@qq.com
* @Date: 2023/10/10 11:41
* @Description: 日期工具类
*/
public class DateUtils {
/**
* 获取提前多少小时的日期时间
* @param hour
* @return
*/
public static String getBeforeByHourTime(int hour){
String returnstr = "";
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - hour);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
returnstr = df.format(calendar.getTime());
return returnstr;
}
/**
* 提前多少天
* @param days
* @return
*/
public static String getBeforeDays(int days) {
String returnstr = "";
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) - days);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
returnstr = df.format(calendar.getTime());
return returnstr;
}
/**
* 获取本月第一天
* @return
*/
public static String getCurrentMonthFirstDay(){
// 获取当前日期
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 将日期设置为第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
// 获取本月第一天的日期
Date currentMonthFirstDay = calendar.getTime();
return sdf.format(currentMonthFirstDay);
}
/**
* 获取指定日期的上个月第一天日期
* @param currentMonthFirstDay
* @return
*/
public static String getLastMonthFirstDay(String currentMonthFirstDay){
// 获取当前日期
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(currentMonthFirstDay);
} catch (ParseException e) {
e.printStackTrace();
}
calendar.setTime(date);
// 将日期设置为上个月
calendar.add(Calendar.MONTH, -1);
// 将日期设置为第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
// 获取上个月第一天的日期
Date lastMonthFirstDay = calendar.getTime();
return sdf.format(lastMonthFirstDay);
}
/**
* 获取具体日期那周某星期几日期
* SUNDAY = 1
* MONDAY = 2 Calendar.MONDAY
* TUESDAY = 3
* WEDNESDAY = 4
* THURSDAY = 5
* FRIDAY = 6
* SATURDAY = 7
* @param date
* @param dayOfWeek
* @return
*/
public static String getCurrentWeekDay(String date, int dayOfWeek){
//设置日期格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date parse = null;
try {
parse = df.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cld = Calendar.getInstance();
cld.setTime(parse);
cld.setFirstDayOfWeek(Calendar.MONDAY);//以周一为首日
cld.set(Calendar.DAY_OF_WEEK, dayOfWeek);//周一
return df.format(cld.getTime());
}
/**
* 获取前多少个月的第一天日期
* @return
*/
public String getLastNumMonthFirstDay(int lastMonthNum){
// 获取当前日期
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 将日期设置为前几月
calendar.add(Calendar.MONTH, -lastMonthNum);
// 将日期设置为第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
// 获取第一天的日期
Date lastNumMonthFirstDay = calendar.getTime();
return sdf.format(lastNumMonthFirstDay);
}
/**
* 获取本月最后一天
* @return
*/
public String getCurrentMonthLastDay(){
// 获取当前月份
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String currentMonth = sdf.format(date);
// 获取当前月份的最后一天日期
int lastDay = getLastDayOfMonth(currentMonth);
return currentMonth + "-" + lastDay;
}
/**
* 获取某月最后一天
* @param month
* @return
*/
public int getLastDayOfMonth(String month) {
int year = Integer.parseInt(month.substring(0, 4));
int monthValue = Integer.parseInt(month.substring(5));
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthValue - 1, 1);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 获取指定日期的上个月第一天或最后一天日期
* @param currentMonthFirstDay
* @param firstOrLast 0第一天 ,1最后一天
* @return
*/
public String getLastMonthFirstOrLastDay(String currentMonthFirstDay,int firstOrLast){
// 获取当前日期
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(currentMonthFirstDay);
} catch (ParseException e) {
e.printStackTrace();
}
calendar.setTime(date);
// 将日期设置为上个月
calendar.add(Calendar.MONTH, -1);
// 将日期设置为第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
// 获取上个月第一天的日期
Date lastMonthFirstDay = calendar.getTime();
// 若最后一天
if (firstOrLast == 1){
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM");
String currentMonth = sdf1.format(lastMonthFirstDay);
// 获取当前月份的最后一天日期
int lastDay = getLastDayOfMonth(currentMonth);
return currentMonth + "-" + lastDay;
}
return sdf.format(lastMonthFirstDay);
}
}