import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.chrono.ChronoZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
- tool class for dealing date on >= JDK8
- @author
*/
public final class DateUtil {
/**
* Formatter
*/
private static final DateTimeFormatter DATETIME_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
*Formatter
*/
private static final DateTimeFormatter SHORT_DATETIME_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
/**
*Formatter
*/
private static final DateTimeFormatter DATE_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd");
/**
*Formatter
*/
private static final DateTimeFormatter TIME_FMT = DateTimeFormatter.ofPattern("HH:mm:ss");
/**
*Formatter
*/
private static final DateTimeFormatter TM_FMT = DateTimeFormatter.ofPattern("HH:mm");
/**
* get time stamp.
* @return
*/
public static long millis() {
return Clock.systemDefaultZone().millis();
}
/**
* get nano time stamp.
* @return
*/
public static long nanotime() {
return System.nanoTime();
}
/**
* get date string of 'yyyy-MM-dd'.
* @return
*/
public static String now() {
return LocalDate.now().toString();
}
/**
* get date string of 'yyyy-MM-dd HH:mm:ss'.
* @return
*/
public static String datetime() {
return LocalDateTime.now().format(DATETIME_FMT);
}
/**
* get date string of 'yyyy-MM-dd HH:mm'.
* @return
*/
public static String datetm() {
return LocalDateTime.now().format(SHORT_DATETIME_FMT);
}
/**
* get date string of 'yyyy-MM'.
* @return
*/
public static String date() {
return YearMonth.now().toString();
}
/**
* get time string of 'HH:mm:ss'.
* @return
*/
public static String time() {
return LocalTime.now().format(TIME_FMT);
}
/**
* get time string of 'HH:mm'.
* @return
*/
public static String tm() {
return LocalTime.now().format(TM_FMT);
}
/**
* format
* @param ldt
* @param type
* @return
*/
public static String format(LocalDateTime ldt, int type){
if(type == 0){
return ldt.format(DATE_FMT);
}
if(type == 1){
return ldt.format(SHORT_DATETIME_FMT);
}
return ldt.format(DATETIME_FMT);
}
/**
* get java.time.LocalDate from java.util.Date.
* @param date
* @return
*/
public static LocalDate from(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).toLocalDate();
}
/**
* convert java.util.Date to java.time.LocalDate.
* @param localDate
* @return
*/
public static Date to(LocalDate localDate) {
ZoneId zoneId = ZoneId.systemDefault();
ChronoZonedDateTime<LocalDate> zonedDateTime = localDate.atStartOfDay(zoneId);
return Date.from(zonedDateTime.toInstant());
}
/**
* parse timeStr to Timestamp.
* @param 'yyyy-MM-dd HH:mm:ss'
* @return
*/
public static Timestamp parse(String timeStr){
try{
Timestamp time = Timestamp.valueOf(timeStr);
return time;
}catch(Exception e){
return null;
}
}
/**
* timestamp
* @return
*/
public static Timestamp timestamp(){
return new Timestamp(System.currentTimeMillis());
}
/**
* toLocalDate
* @param timestamp
* @return
*/
public static LocalDate toLocalDate(Timestamp timestamp){
return timestamp.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();
}
/**
* toLocalDateTime
* @param timestamp
* @return
*/
public static LocalDateTime toLocalDateTime(Timestamp timestamp){
return timestamp.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
}
}