jdk8使用线程安全的格式化工具DateTimeFormatter,jdk8之前使用SimpleDateFormat作为格式化工具,但SimpleDateFormat是非线程安全的。下面的例子 把时间格式化与字符串解析为时间都列出来了,可以作为参考,如有其他需求大家可以自己扩展。
代码示例
/**
* 年月日格式 LocalDate\LocalDateTime
* @param temporal
* @return
*/
public static String formatYYYYMMDD(TemporalAccessor temporal) {
return format(temporal,"yyyy-MM-dd");
}
/**
* 时分秒格式化
* @param localTime
* @return
*/
public static String formatHHmmss(LocalTime localTime) {
return format(localTime,"HH:mm:ss");
}
/**
* 年月日时分秒格式 LocalDate\LocalDateTime
* @param temporal
* @return
*/
public static String formatYMDHMS(TemporalAccessor temporal) {
return format(temporal,"yyyy-MM-dd HH:mm:ss");
}
/**
* 字符串解析成LocalDateTime
* @param time
* @param pattern
* @return
*/
public static LocalDateTime parseLocalDateTime(String time, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return LocalDateTime.parse(time,formatter);
}
/**
* 字符串解析成LocalDate
* @param time
* @param pattern
* @return
*/
public static LocalDate parseLocalDate(String time, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return LocalDate.parse(time,formatter);
}
/**
* 字符串解析成Date
* @param time 格式化的时间
* @param pattern 匹配的格式
* @return
*/
public static Date parse2Date(String time, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return Date.from(LocalDate.parse(time,formatter).atStartOfDay(ZoneId.systemDefault()).toInstant());
}
/**
*格式化
*/
private static String format(TemporalAccessor temporal, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return formatter.format(temporal);
}