Class DateFormatter

java.lang.Object
cloud.opencode.base.date.formatter.DateFormatter

public final class DateFormatter extends Object
Predefined Date Formatters with caching support 预定义的日期格式化器,支持缓存

This class provides commonly used DateTimeFormatter instances and a caching mechanism for custom patterns. All formatters are thread-safe and reusable.

此类提供常用的DateTimeFormatter实例和自定义模式的缓存机制。 所有格式化器都是线程安全的和可重用的。

Features | 主要功能:

  • Predefined common formats (ISO, Chinese, etc.) - 预定义常用格式(ISO、中文等)
  • Formatter caching for custom patterns - 自定义模式的格式化器缓存
  • Thread-safe formatter access - 线程安全的格式化器访问
  • Quick format methods - 快速格式化方法

Usage Examples | 使用示例:

// Use predefined formatters
String date = DateFormatter.NORM_DATE.format(LocalDate.now());       // 2024-01-15
String time = DateFormatter.NORM_TIME.format(LocalTime.now());       // 14:30:45
String dateTime = DateFormatter.NORM_DATETIME.format(LocalDateTime.now()); // 2024-01-15 14:30:45

// Use Chinese format
String chinese = DateFormatter.CHINESE_DATE.format(LocalDate.now()); // 2024年01月15日

// Get cached formatter
DateTimeFormatter custom = DateFormatter.ofPattern("yyyy/MM/dd");

// Quick format
String formatted = DateFormatter.format(LocalDateTime.now(), "yyyy-MM-dd");

Performance | 性能特性:

  • Formatter caching reduces object creation - 格式化器缓存减少对象创建
  • Thread-safe using ConcurrentHashMap - 使用ConcurrentHashMap保证线程安全

Security | 安全性:

  • Thread-safe: Yes - 线程安全: 是
  • Immutable formatters: Yes - 不可变格式化器: 是
Since:
JDK 25, opencode-base-date V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final DateTimeFormatter
    Chinese date format: yyyy年MM月dd日 (e.g., 2024年01月15日) 中文日期格式:yyyy年MM月dd日(例如:2024年01月15日)
    static final DateTimeFormatter
    Chinese date format (short): yyyy年M月d日 (e.g., 2024年1月5日) 中文日期格式(短):yyyy年M月d日(例如:2024年1月5日)
    static final DateTimeFormatter
    Chinese datetime format: yyyy年MM月dd日 HH时mm分ss秒 中文日期时间格式:yyyy年MM月dd日 HH时mm分ss秒
    static final DateTimeFormatter
    Chinese month format: yyyy年MM月 (e.g., 2024年01月) 中文月份格式:yyyy年MM月(例如:2024年01月)
    static final DateTimeFormatter
    Chinese time format: HH时mm分ss秒 (e.g., 14时30分45秒) 中文时间格式:HH时mm分ss秒(例如:14时30分45秒)
    static final DateTimeFormatter
    Flexible datetime format that tolerates various separators 弹性日期时间格式,容忍各种分隔符
    static final DateTimeFormatter
    HTTP date format: EEE, dd MMM yyyy HH:mm:ss 'GMT' (RFC 7231) HTTP日期格式:EEE, dd MMM yyyy HH:mm:ss 'GMT'(RFC 7231)
    static final DateTimeFormatter
    ISO date format: yyyy-MM-dd (same as DateTimeFormatter.ISO_LOCAL_DATE) ISO日期格式:yyyy-MM-dd(与DateTimeFormatter.ISO_LOCAL_DATE相同)
    static final DateTimeFormatter
    ISO datetime format: yyyy-MM-dd'T'HH:mm:ss ISO日期时间格式:yyyy-MM-dd'T'HH:mm:ss
    static final DateTimeFormatter
    ISO offset datetime format: yyyy-MM-dd'T'HH:mm:ssXXX ISO偏移日期时间格式:yyyy-MM-dd'T'HH:mm:ssXXX
    static final DateTimeFormatter
    ISO time format: HH:mm:ss (same as DateTimeFormatter.ISO_LOCAL_TIME) ISO时间格式:HH:mm:ss(与DateTimeFormatter.ISO_LOCAL_TIME相同)
    static final DateTimeFormatter
    ISO zoned datetime format: yyyy-MM-dd'T'HH:mm:ssXXX[VV] ISO带时区日期时间格式:yyyy-MM-dd'T'HH:mm:ssXXX[VV]
    static final DateTimeFormatter
    Standard date format: yyyy-MM-dd (e.g., 2024-01-15) 标准日期格式:yyyy-MM-dd(例如:2024-01-15)
    static final DateTimeFormatter
    Standard datetime format: yyyy-MM-dd HH:mm:ss (e.g., 2024-01-15 14:30:45) 标准日期时间格式:yyyy-MM-dd HH:mm:ss(例如:2024-01-15 14:30:45)
    static final DateTimeFormatter
    Datetime with milliseconds: yyyy-MM-dd HH:mm:ss.SSS 带毫秒的日期时间:yyyy-MM-dd HH:mm:ss.SSS
    static final DateTimeFormatter
    Year-month format: yyyy-MM (e.g., 2024-01) 年-月格式:yyyy-MM(例如:2024-01)
    static final DateTimeFormatter
    Standard time format: HH:mm:ss (e.g., 14:30:45) 标准时间格式:HH:mm:ss(例如:14:30:45)
    static final DateTimeFormatter
    Time with milliseconds: HH:mm:ss.SSS 带毫秒的时间:HH:mm:ss.SSS
    static final DateTimeFormatter
    Year format: yyyy (e.g., 2024) 年份格式:yyyy(例如:2024)
    static final DateTimeFormatter
    Compact date format: yyyyMMdd (e.g., 20240115) 紧凑日期格式:yyyyMMdd(例如:20240115)
    static final DateTimeFormatter
    Compact datetime format: yyyyMMddHHmmss (e.g., 20240115143045) 紧凑日期时间格式:yyyyMMddHHmmss(例如:20240115143045)
    static final DateTimeFormatter
    Compact datetime with milliseconds: yyyyMMddHHmmssSSS 紧凑日期时间带毫秒:yyyyMMddHHmmssSSS
    static final DateTimeFormatter
    Compact time format: HHmmss (e.g., 143045) 紧凑时间格式:HHmmss(例如:143045)
  • Method Summary

    Modifier and Type
    Method
    Description
    static int
    Gets the current cache size 获取当前缓存大小
    static void
    Clears the formatter cache 清除格式化器缓存
    static String
    format(TemporalAccessor temporal, String pattern)
    Formats a temporal using the given pattern 使用给定模式格式化时间对象
    static String
    Formats a temporal to Chinese date format (yyyy年MM月dd日) 将时间对象格式化为中文日期格式(yyyy年MM月dd日)
    static String
    Formats a temporal to Chinese datetime format 将时间对象格式化为中文日期时间格式
    static String
    Formats a LocalDate to standard date format (yyyy-MM-dd) 将LocalDate格式化为标准日期格式(yyyy-MM-dd)
    static String
    Formats a LocalDateTime to standard datetime format (yyyy-MM-dd HH:mm:ss) 将LocalDateTime格式化为标准日期时间格式(yyyy-MM-dd HH:mm:ss)
    static String
    Formats a LocalDateTime to ISO format (yyyy-MM-dd'T'HH:mm:ss) 将LocalDateTime格式化为ISO格式(yyyy-MM-dd'T'HH:mm:ss)
    static String
    Formats a LocalTime to standard time format (HH:mm:ss) 将LocalTime格式化为标准时间格式(HH:mm:ss)
    ofPattern(String pattern)
    Gets or creates a cached DateTimeFormatter for the given pattern 获取或创建给定模式的缓存DateTimeFormatter
    ofPattern(String pattern, Locale locale)
    Gets or creates a cached DateTimeFormatter for the given pattern and locale 获取或创建给定模式和区域设置的缓存DateTimeFormatter

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • NORM_DATE

      public static final DateTimeFormatter NORM_DATE
      Standard date format: yyyy-MM-dd (e.g., 2024-01-15) 标准日期格式:yyyy-MM-dd(例如:2024-01-15)
    • NORM_TIME

      public static final DateTimeFormatter NORM_TIME
      Standard time format: HH:mm:ss (e.g., 14:30:45) 标准时间格式:HH:mm:ss(例如:14:30:45)
    • NORM_DATETIME

      public static final DateTimeFormatter NORM_DATETIME
      Standard datetime format: yyyy-MM-dd HH:mm:ss (e.g., 2024-01-15 14:30:45) 标准日期时间格式:yyyy-MM-dd HH:mm:ss(例如:2024-01-15 14:30:45)
    • NORM_DATETIME_MS

      public static final DateTimeFormatter NORM_DATETIME_MS
      Datetime with milliseconds: yyyy-MM-dd HH:mm:ss.SSS 带毫秒的日期时间:yyyy-MM-dd HH:mm:ss.SSS
    • NORM_TIME_MS

      public static final DateTimeFormatter NORM_TIME_MS
      Time with milliseconds: HH:mm:ss.SSS 带毫秒的时间:HH:mm:ss.SSS
    • PURE_DATE

      public static final DateTimeFormatter PURE_DATE
      Compact date format: yyyyMMdd (e.g., 20240115) 紧凑日期格式:yyyyMMdd(例如:20240115)
    • PURE_TIME

      public static final DateTimeFormatter PURE_TIME
      Compact time format: HHmmss (e.g., 143045) 紧凑时间格式:HHmmss(例如:143045)
    • PURE_DATETIME

      public static final DateTimeFormatter PURE_DATETIME
      Compact datetime format: yyyyMMddHHmmss (e.g., 20240115143045) 紧凑日期时间格式:yyyyMMddHHmmss(例如:20240115143045)
    • PURE_DATETIME_MS

      public static final DateTimeFormatter PURE_DATETIME_MS
      Compact datetime with milliseconds: yyyyMMddHHmmssSSS 紧凑日期时间带毫秒:yyyyMMddHHmmssSSS
    • CHINESE_DATE

      public static final DateTimeFormatter CHINESE_DATE
      Chinese date format: yyyy年MM月dd日 (e.g., 2024年01月15日) 中文日期格式:yyyy年MM月dd日(例如:2024年01月15日)
    • CHINESE_TIME

      public static final DateTimeFormatter CHINESE_TIME
      Chinese time format: HH时mm分ss秒 (e.g., 14时30分45秒) 中文时间格式:HH时mm分ss秒(例如:14时30分45秒)
    • CHINESE_DATETIME

      public static final DateTimeFormatter CHINESE_DATETIME
      Chinese datetime format: yyyy年MM月dd日 HH时mm分ss秒 中文日期时间格式:yyyy年MM月dd日 HH时mm分ss秒
    • CHINESE_DATE_SHORT

      public static final DateTimeFormatter CHINESE_DATE_SHORT
      Chinese date format (short): yyyy年M月d日 (e.g., 2024年1月5日) 中文日期格式(短):yyyy年M月d日(例如:2024年1月5日)
    • ISO_DATE

      public static final DateTimeFormatter ISO_DATE
      ISO date format: yyyy-MM-dd (same as DateTimeFormatter.ISO_LOCAL_DATE) ISO日期格式:yyyy-MM-dd(与DateTimeFormatter.ISO_LOCAL_DATE相同)
    • ISO_TIME

      public static final DateTimeFormatter ISO_TIME
      ISO time format: HH:mm:ss (same as DateTimeFormatter.ISO_LOCAL_TIME) ISO时间格式:HH:mm:ss(与DateTimeFormatter.ISO_LOCAL_TIME相同)
    • ISO_DATETIME

      public static final DateTimeFormatter ISO_DATETIME
      ISO datetime format: yyyy-MM-dd'T'HH:mm:ss ISO日期时间格式:yyyy-MM-dd'T'HH:mm:ss
    • ISO_OFFSET_DATETIME

      public static final DateTimeFormatter ISO_OFFSET_DATETIME
      ISO offset datetime format: yyyy-MM-dd'T'HH:mm:ssXXX ISO偏移日期时间格式:yyyy-MM-dd'T'HH:mm:ssXXX
    • ISO_ZONED_DATETIME

      public static final DateTimeFormatter ISO_ZONED_DATETIME
      ISO zoned datetime format: yyyy-MM-dd'T'HH:mm:ssXXX[VV] ISO带时区日期时间格式:yyyy-MM-dd'T'HH:mm:ssXXX[VV]
    • HTTP_DATE

      public static final DateTimeFormatter HTTP_DATE
      HTTP date format: EEE, dd MMM yyyy HH:mm:ss 'GMT' (RFC 7231) HTTP日期格式:EEE, dd MMM yyyy HH:mm:ss 'GMT'(RFC 7231)
    • NORM_MONTH

      public static final DateTimeFormatter NORM_MONTH
      Year-month format: yyyy-MM (e.g., 2024-01) 年-月格式:yyyy-MM(例如:2024-01)
    • NORM_YEAR

      public static final DateTimeFormatter NORM_YEAR
      Year format: yyyy (e.g., 2024) 年份格式:yyyy(例如:2024)
    • CHINESE_MONTH

      public static final DateTimeFormatter CHINESE_MONTH
      Chinese month format: yyyy年MM月 (e.g., 2024年01月) 中文月份格式:yyyy年MM月(例如:2024年01月)
    • FLEXIBLE_DATETIME

      public static final DateTimeFormatter FLEXIBLE_DATETIME
      Flexible datetime format that tolerates various separators 弹性日期时间格式,容忍各种分隔符
  • Method Details

    • ofPattern

      public static DateTimeFormatter ofPattern(String pattern)
      Gets or creates a cached DateTimeFormatter for the given pattern 获取或创建给定模式的缓存DateTimeFormatter
      Parameters:
      pattern - the pattern | 模式
      Returns:
      the DateTimeFormatter | DateTimeFormatter
      Throws:
      NullPointerException - if pattern is null | 如果模式为null则抛出异常
      IllegalArgumentException - if pattern is invalid | 如果模式无效则抛出异常
    • ofPattern

      public static DateTimeFormatter ofPattern(String pattern, Locale locale)
      Gets or creates a cached DateTimeFormatter for the given pattern and locale 获取或创建给定模式和区域设置的缓存DateTimeFormatter
      Parameters:
      pattern - the pattern | 模式
      locale - the locale | 区域设置
      Returns:
      the DateTimeFormatter | DateTimeFormatter
    • format

      public static String format(TemporalAccessor temporal, String pattern)
      Formats a temporal using the given pattern 使用给定模式格式化时间对象
      Parameters:
      temporal - the temporal | 时间对象
      pattern - the pattern | 模式
      Returns:
      the formatted string | 格式化的字符串
    • formatDate

      public static String formatDate(LocalDate date)
      Formats a LocalDate to standard date format (yyyy-MM-dd) 将LocalDate格式化为标准日期格式(yyyy-MM-dd)
      Parameters:
      date - the date | 日期
      Returns:
      the formatted string | 格式化的字符串
    • formatTime

      public static String formatTime(LocalTime time)
      Formats a LocalTime to standard time format (HH:mm:ss) 将LocalTime格式化为标准时间格式(HH:mm:ss)
      Parameters:
      time - the time | 时间
      Returns:
      the formatted string | 格式化的字符串
    • formatDateTime

      public static String formatDateTime(LocalDateTime dateTime)
      Formats a LocalDateTime to standard datetime format (yyyy-MM-dd HH:mm:ss) 将LocalDateTime格式化为标准日期时间格式(yyyy-MM-dd HH:mm:ss)
      Parameters:
      dateTime - the datetime | 日期时间
      Returns:
      the formatted string | 格式化的字符串
    • formatIso

      public static String formatIso(LocalDateTime dateTime)
      Formats a LocalDateTime to ISO format (yyyy-MM-dd'T'HH:mm:ss) 将LocalDateTime格式化为ISO格式(yyyy-MM-dd'T'HH:mm:ss)
      Parameters:
      dateTime - the datetime | 日期时间
      Returns:
      the formatted string | 格式化的字符串
    • formatChinese

      public static String formatChinese(LocalDate date)
      Formats a temporal to Chinese date format (yyyy年MM月dd日) 将时间对象格式化为中文日期格式(yyyy年MM月dd日)
      Parameters:
      date - the date | 日期
      Returns:
      the formatted string | 格式化的字符串
    • formatChinese

      public static String formatChinese(LocalDateTime dateTime)
      Formats a temporal to Chinese datetime format 将时间对象格式化为中文日期时间格式
      Parameters:
      dateTime - the datetime | 日期时间
      Returns:
      the formatted string | 格式化的字符串
    • cacheSize

      public static int cacheSize()
      Gets the current cache size 获取当前缓存大小
      Returns:
      the cache size | 缓存大小
    • clearCache

      public static void clearCache()
      Clears the formatter cache 清除格式化器缓存