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 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())); // ¸ñʽ»¯Ê±¼ä } }