获取当前日期的月初日期 (格式:年-月-日)
public static String getNowMonthFirstDay() {
LocalDate localDate = LocalDate.now().withDayOfMonth(1);
return localDate.toString();
}
获取昨日(格式:年-月-日)
public static String getYesterday() {
LocalDate localDate = LocalDate.now();
LocalDate yesterday = localDate.minusDays(1);
return yesterday.toString();
}
获取指定年月的每月天数
public static Integer getMonthDay(String monthStr) {
Integer year = Integer.valueOf(monthStr.substring(0,4));
Integer month = Integer.valueOf(monthStr.substring(5,7));
LocalDate localDate = LocalDate.of(year, month, 1);
return YearMonth.from(localDate).lengthOfMonth();
}
获取本月剩余天数 包括当天
public static Integer getResidueDayNum() {
LocalDate currentDate = LocalDate.now();
int totalDaysInMonth = currentDate.lengthOfMonth();
return (totalDaysInMonth-currentDate.getDayOfMonth())+1;
}
获取本年剩余月数 包括当月
public static Integer getResidueMonthNum() {
Calendar calendar = Calendar.getInstance();
return 12 - calendar.get(Calendar.MONTH);
}
判断输入日期是否是本月
public static boolean isThisMonth(String monthStr) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate dateToCheck = LocalDate.parse(monthStr, formatter);
LocalDate currentDate = LocalDate.now();
return dateToCheck.getYear() == currentDate.getYear() && dateToCheck.getMonthValue() == currentDate.getMonthValue();
}
判断输入日期是否是本年
public static Boolean isThisYear(String year) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate dateToCheck = LocalDate.parse(year, formatter);
LocalDate currentDate = LocalDate.now();
return dateToCheck.getYear() == currentDate.getYear();
}
获取两个日期间的每一天 yyyy-MM-dd
private List<String> getEveryDay(String startDate, String endDate) {
List<String> days = new ArrayList<>();
LocalDate start = LocalDate.of(Integer.parseInt(startDate.substring(0,4)), Integer.parseInt(startDate.substring(5,7)), Integer.parseInt(startDate.substring(8)));
LocalDate end = LocalDate.of(Integer.parseInt(endDate.substring(0,4)), Integer.parseInt(endDate.substring(5,7)), Integer.parseInt(endDate.substring(8)));
LocalDate currentDate = start;
while (!currentDate.isAfter(end)) {
days.add(String.valueOf(currentDate));
currentDate = currentDate.plusDays(1);
}
return days;
}
获取两个月份间的每个?日 入参时间格式yyyy-MM 例如2024-01到2024-12每个月的5号
private List<String> getMonthDays(String startDate, String endDate, String inspectionDay) {
List<String> days = new ArrayList<>();
LocalDate start = LocalDate.of(Integer.parseInt(startDate.substring(0,4)), Integer.parseInt(startDate.substring(5,7)), 1);
LocalDate end = LocalDate.of(Integer.parseInt(endDate.substring(0,4)), Integer.parseInt(endDate.substring(5,7)),1);
long monthsBetween = ChronoUnit.MONTHS.between(start.withDayOfMonth(1),end.withDayOfMonth(1));
Integer startYear = Integer.parseInt(startDate.substring(0,4));
Integer startMonth = Integer.parseInt(startDate.substring(5,7));
for (int i = 1, j = (int) (monthsBetween+1); i<=j; i++ ) {
if(startMonth > 12){
startMonth = startMonth-12;
startYear = startYear+1;
}
Integer day = Integer.parseInt(inspectionDay);
LocalDate dayDate = null;
dayDate = getDayDate(dayDate, startYear,startMonth,day);
days.add(String.valueOf(dayDate));
startMonth = startMonth+1;
}
return days;
}
private LocalDate getDayDate(LocalDate dayDate, Integer startYear, Integer startMonth, Integer day) {
try{
dayDate = LocalDate.of(startYear, startMonth, day);
}catch (Exception e){
if (e.getMessage().contains("Invalid date ")) {
day = day-1;
dayDate = getDayDate(dayDate, startYear,startMonth,day);
}
}
return dayDate;
}
获取两个日期间的每个周几 yyyy-MM-dd 例如2024-01到2024-12每个周一的日期
public static List<String> getWeekDays(String startDate, String endDate,DayOfWeek dayOfWeek) {
LocalDate start = LocalDate.of(Integer.parseInt(startDate.substring(0,4)), Integer.parseInt(startDate.substring(5,7)), Integer.parseInt(startDate.substring(8)));
LocalDate end = LocalDate.of(Integer.parseInt(endDate.substring(0,4)), Integer.parseInt(endDate.substring(5,7)), Integer.parseInt(endDate.substring(8)));
List<String> mondays = new ArrayList<>();
while (start.isBefore(end) || start.isEqual(end)) {
if (start.getDayOfWeek().equals(dayOfWeek)) {
mondays.add(String.valueOf(start));
}
start = start.plusDays(1);
}
return mondays;
}
/**
* 根据数字获取周几
*/
private DayOfWeek getWeekType(String inspectionDay) {
if("1".equals(inspectionDay)){
return DayOfWeek.MONDAY;
}else if("2".equals(inspectionDay)){
return DayOfWeek.TUESDAY;
}else if("3".equals(inspectionDay)){
return DayOfWeek.WEDNESDAY;
}else if("4".equals(inspectionDay)){
return DayOfWeek.THURSDAY;
}else if("5".equals(inspectionDay)){
return DayOfWeek.FRIDAY;
}else if("6".equals(inspectionDay)){
return DayOfWeek.SATURDAY;
}else {
return DayOfWeek.SUNDAY;
}
}