更新时间:2022-06-18 23:51:06
/**
* 基于 JDK 8 time包的时间工具类
* <p/>
* Created by bysocket on 16/8/23.
*/
public final class TimeUtil {
/**
* 获取默认时间格式: yyyy-MM-dd HH:mm:ss
*/
private static final DateTimeFormatter DEFAULT_DATETIME_FORMATTER = TimeFormat.LONG_DATE_PATTERN_LINE.formatter;
private TimeUtil() {
// no construct function
}
/**
* String 转时间
*
* @param timeStr
* @return
*/
public static LocalDateTime parseTime(String timeStr) {
return LocalDateTime.parse(timeStr, DEFAULT_DATETIME_FORMATTER);
}
/**
* String 转时间
*
* @param timeStr
* @param format 时间格式
* @return
*/
public static LocalDateTime parseTime(String timeStr, TimeFormat format) {
return LocalDateTime.parse(timeStr, format.formatter);
}
/**
* 时间转 String
*
* @param time
* @return
*/
public static String parseTime(LocalDateTime time) {
return DEFAULT_DATETIME_FORMATTER.format(time);
}
/**
* 时间转 String
*
* @param time
* @param format 时间格式
* @return
*/
public static String parseTime(LocalDateTime time, TimeFormat format) {
return format.formatter.format(time);
}
/**
* 获取当前时间
*
* @return
*/
public static String getCurrentDatetime() {
return DEFAULT_DATETIME_FORMATTER.format(LocalDateTime.now());
}
/**
* 获取当前时间
*
* @param format 时间格式
* @return
*/
public static String getCurrentDatetime(TimeFormat format) {
return format.formatter.format(LocalDateTime.now());
}
/**
* 时间格式
*/
public enum TimeFormat {
/**
* 短时间格式
*/
SHORT_DATE_PATTERN_LINE("yyyy-MM-dd"),
SHORT_DATE_PATTERN_SLASH("yyyy/MM/dd"),
SHORT_DATE_PATTERN_DOUBLE_SLASH("yyyy\\MM\\dd"),
SHORT_DATE_PATTERN_NONE("yyyyMMdd"),
/**
* 长时间格式
*/
LONG_DATE_PATTERN_LINE("yyyy-MM-dd HH:mm:ss"),
LONG_DATE_PATTERN_SLASH("yyyy/MM/dd HH:mm:ss"),
LONG_DATE_PATTERN_DOUBLE_SLASH("yyyy\\MM\\dd HH:mm:ss"),
LONG_DATE_PATTERN_NONE("yyyyMMdd HH:mm:ss"),
/**
* 长时间格式 带毫秒
*/
LONG_DATE_PATTERN_WITH_MILSEC_LINE("yyyy-MM-dd HH:mm:ss.SSS"),
LONG_DATE_PATTERN_WITH_MILSEC_SLASH("yyyy/MM/dd HH:mm:ss.SSS"),
LONG_DATE_PATTERN_WITH_MILSEC_DOUBLE_SLASH("yyyy\\MM\\dd HH:mm:ss.SSS"),
LONG_DATE_PATTERN_WITH_MILSEC_NONE("yyyyMMdd HH:mm:ss.SSS");
private transient DateTimeFormatter formatter;
TimeFormat(String pattern) {
formatter = DateTimeFormatter.ofPattern(pattern);
}
}
}
String now = TimeUtil.getCurrentDatetime();
System.out.println(now);
output:
2016-08-28 16:35:23
String now = TimeUtil.getCurrentDatetime(TimeUtil.TimeFormat.LONG_DATE_PATTERN_SLASH);
System.out.println(now);
output:
2016/08/28 16:36:24
默认格式:yyyy-MM-dd HH:mm:ss
LocalDateTime expectedDateTime = LocalDateTime.of(2014, 11, 11, 10, 11, 11);
LocalDateTime parsedTime = TimeUtil.parseTime("2014-11-11 10:11:11");
assertEquals(expectedDateTime, parsedTime);
其他格式之一:yyyy-MM-dd HH:mm:ss
LocalDateTime expectedDateTime = LocalDateTime.of(2014, 11, 11, 10, 11, 11);
LocalDateTime parsedTime = TimeUtil.parseTime("2014/11/11 10:11:11", LONG_DATE_PATTERN_SLASH);
assertEquals(expectedDateTime, parsedTime);
默认格式:yyyy-MM-dd HH:mm:ss
LocalDateTime time = LocalDateTime.of(2014, 11, 11, 10, 11, 11);
assertEquals(TimeUtil.parseTime(time), "2014-11-11 10:11:11");
其他格式之一:yyyy-MM-dd HH:mm:ss
LocalDateTime time = LocalDateTime.of(2014, 11, 11, 10, 11, 11);
assertEquals(TimeUtil.parseTime(time, LONG_DATE_PATTERN_DOUBLE_SLASH), "2014\\11\\11 10:11:11");