public class DateUtils {
public static final String DATE_PATTERN = "yyyy-MM-dd";
public static final String DATE_YM_PATTERN = "yyyyMM";
public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static LocalDate parseDate(String date, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return LocalDate.parse(date, formatter);
}
public static LocalDateTime parseDateTime(String dateTime, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return LocalDateTime.parse(dateTime, formatter);
}
public static String parseString(LocalDate date, String pattern) {
if (Objects.isNull(date)) {
return "";
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return formatter.format(date);
}
public static String parseString(LocalDateTime dateTime, String pattern) {
if (Objects.isNull(dateTime)) {
return "";
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return formatter.format(dateTime);
}
public static Long toMillisecond(LocalDateTime dateTime) {
return dateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
public static Long toMillisecond(LocalDate date) {
LocalDateTime dateTime = date.atStartOfDay();
return dateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
public static String getWeekDateOfDay(String date){
LocalDate localDate = LocalDate.parse(date);
int year = localDate.get(WeekFields.ISO.weekBasedYear());
int week = localDate.get(WeekFields.ISO.weekOfWeekBasedYear());
String weekDate = week>=10 ? year + "" + week : year + "0" + week;
return weekDate;
}
public static LocalDate getDayOfWeek(String category, long newValue){
int year = Integer.valueOf(category.substring(0,4));
int numWeek = Integer.valueOf(category.substring(4,6));
WeekFields weekFields= WeekFields.ISO;
LocalDate now = LocalDate.now();
LocalDate localDate = now.withYear(year).with(weekFields.weekOfYear(),numWeek);
LocalDate goalLocalDate = localDate.with(weekFields.dayOfWeek(), newValue);
return goalLocalDate;
}
}