public class DateUtil {
public static final String DATE_TIME_PATTERN = "yyyyMMddHHmmss";
public static final String DATE_PATTERN = "yyyy-MM-dd";
public static final String DATE_PATTERN_NEW = "yyyyMMdd";
public static final String DATE_PATTERN_YM = "yyyyMM";
public static final String DATE_TIME_SEPARATOR_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_PATTERN_CHINESE = "yyyy年MM月dd日";
public static Long dateString2Long(String date, String format) {
if (StringUtils.isEmpty(date) || StringUtils.isEmpty(format)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = null;
try {
d = sdf.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
if (d != null) {
return d.getTime() < 0 ? 0 : d.getTime();
}
return null;
}
public static String format(Date date, String pattern) {
Instant instant = date.toInstant();
LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
return localDateTime.format(dateTimeFormatter);
}
/**
* 日期字符串格式化
* @param dateStr
* @param pattern
* @return
*/
public static String format(String dateStr, String pattern) {
LocalDate localDateTime = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(DATE_PATTERN));
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
return localDateTime.format(dateTimeFormatter);
}
/**
* 根据输入日期(yyyy-MM-dd)和统计周数获取周和日期集合,默认周数从第一周开始
* example:
* getWeekAndDaysMap("2022-05-18",2)
* return k(第几周),v(日期集合)
* 1,["2022-05-12","2022-05-13","2022-05-14","2022-05-15","2022-05-16","2022-05-17","2022-05-18"]
* 2,["2022-05-19","2022-05-20","2022-05-21","2022-05-22","2022-05-23","2022-05-24","2022-05-25"]
* @return
*/
public static Map<Integer, List<String>> getWeekAndDaysMap(String dateStr,int weekCount) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate inputDate = LocalDate.parse(dateStr, dtf);
int week = inputDate.getDayOfWeek().getValue();
LocalDate startDay = null;
// 获取时间段开始日期
if (week < 4) {
// 获取上周四
startDay = inputDate.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY)).minusDays(3);
}else {
// 获取本周四
startDay = inputDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).minusDays(3);
}
Map<Integer,List<String>> weekAndDayMap = new HashMap<>();
LocalDate firstDay = startDay;
for(int i = 1; i <= weekCount; i++) {
List<String> days = new ArrayList<>();
for (int j = 0; j < 7; j++){
String format = firstDay.plusDays(j).format(dtf);
days.add(format);
if (j == 6){
firstDay = firstDay.plusDays(j+1);
}
}
weekAndDayMap.put(i,days);
}
return weekAndDayMap;
}
}
日期工具记录
于 2022-05-18 12:21:01 首次发布