package publicsWay;
|
import java.time.Instant;
|
import java.time.ZoneId;
|
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatterBuilder;
|
import java.time.temporal.ChronoField;
|
|
public class EfficientTimeFormatter {
|
|
// ʹÓà ThreadLocal À´´æ´¢Ã¿¸öÏß³ÌµÄ DateTimeFormatter
|
private static final ThreadLocal<DateTimeFormatter> formatterThreadLocal = ThreadLocal.withInitial(() -> {
|
// ʹÓà DateTimeFormatterBuilder ¹¹½¨Ò»¸ö¸ßЧµÄ¸ñʽ»¯Æ÷
|
return new DateTimeFormatterBuilder()
|
.appendValue(ChronoField.YEAR, 4)
|
.appendLiteral('-')
|
.appendValue(ChronoField.MONTH_OF_YEAR, 2)
|
.appendLiteral('-')
|
.appendValue(ChronoField.DAY_OF_MONTH, 2)
|
.appendLiteral(' ')
|
.appendValue(ChronoField.HOUR_OF_DAY, 2)
|
.appendLiteral(':')
|
.appendValue(ChronoField.MINUTE_OF_HOUR, 2)
|
.appendLiteral(':')
|
.appendValue(ChronoField.SECOND_OF_MINUTE, 2)
|
.toFormatter();
|
});
|
|
// »ñÈ¡µ±Ç°Ê±¼äµÄ×Ö·û´®±íʾ
|
public static String getCurrentTimeFormatted() {
|
Instant now = Instant.now(); // »ñÈ¡µ±Ç°Ê±¼ä
|
DateTimeFormatter formatter = formatterThreadLocal.get(); // »ñÈ¡µ±Ç°Ï̵߳ĸñʽ»¯Æ÷
|
return formatter.format(now.atZone(ZoneId.systemDefault())); // ¸ñʽ»¯Ê±¼ä
|
}
|
|
|
}
|