Package org.aoju.bus.core.date
Class Formatter
java.lang.Object
org.aoju.bus.core.date.Formatter
- Direct Known Subclasses:
Converter
日期格式化和解析
yyyy-MM-dd
HH:mm:ss
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss.SSSSSS
yyyy-MM-dd HH:mm:ss.SSSSSSSSS
yyyy-MM-dd'T'HH:mm:ss.SSSZ等等,支持毫秒、微秒和纳秒等精确时间
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Stringformat(long timestamp) 将Unix时间戳转换成日期static String将Unix时间戳转换成日期static long将指定的日期转换成Unix时间戳static long将指定的日期转换成Unix时间戳static String按照给定的通配模式,格式化成相应的时间字符串static Stringformat(LocalDateTime localDateTime) 格式化日期时间 格式 yyyy-MM-dd HH:mm:ssstatic Stringformat(LocalDateTime localDateTime, String format) 根据特定格式格式化日期static Stringformat(TemporalAccessor time, String format) 格式化日期时间为指定格式 如果为Month,调用Enum.toString()static Stringformat(TemporalAccessor time, DateTimeFormatter formatter) 格式化日期时间为指定格式 如果为Month,调用Enum.toString()static String将指定Calendar时间格式化为纯中文形式static String按照给定的通配模式 YYYY-MM-DD HH:MM:SS ,将时间格式化成相应的字符串static String格式化为中文日期格式,如果isUppercase为false 则返回:2018年10月24日,否则,返回二〇一八年十月二十四日static String根据特定格式格式化日期static String根据特定格式格式化日期static Stringformat(Date date, DateFormat format) 根据特定格式格式化日期static Stringformat(Date date, DateTimeFormatter format) 根据特定格式格式化日期static Stringformat(Date date, DatePrinter format) 根据特定格式格式化日期static StringformatBetween(long betweenMs) 格式化日期间隔输出,精确到毫秒static StringformatBetween(long betweenMs, Fields.Units units) 格式化日期间隔输出static StringformatBetween(Date beginDate, Date endDate) 格式化日期间隔输出,精确到毫秒static StringformatBetween(Date beginDate, Date endDate, Fields.Units units) 格式化日期间隔输出static StringformatDate(Date date) 格式化日期部分(不包括时间) 格式 yyyy-MM-ddstatic StringformatDate(Date date, boolean isHttp) 格式化日期部分(不包括时间) 格式 yyyy-MM-ddstatic StringformatTime(Date date) 格式化时间 格式 HH:mm:ssstatic StringgetShotName(TimeUnit unit) 获取时长单位简写static boolean检查两个时间段是否有时间重叠 重叠指两个时间段是否有交集 x > b || a > y 无交集 则有交集的逻辑为 !(x > b || a > y) 根据德摩根公式,可化简为 x <= b && a <= ystatic SimpleDateFormatnewSimpleFormat(String pattern) 创建SimpleDateFormat,注意此对象非线程安全 此对象默认为严格格式模式,即parse时如果格式不正确会报错static SimpleDateFormatnewSimpleFormat(String pattern, Locale locale, TimeZone timeZone) 创建SimpleDateFormat,注意此对象非线程安全 此对象默认为严格格式模式,即parse时如果格式不正确会报错static DateTimeparse(CharSequence text) 将日期字符串转换为DateTime对象,格式: yyyy-MM-dd HH:mm:ss yyyy/MM/dd HH:mm:ss yyyy.MM.dd HH:mm:ss yyyy年MM月dd日 HH时mm分ss秒 yyyy-MM-dd yyyy/MM/dd yyyy.MM.dd HH:mm:ss HH时mm分ss秒 yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss.SSS yyyy-MM-dd HH:mm:ss.SSSSSS yyyyMMddHHmmss yyyyMMddHHmmssSSS yyyyMMdd EEE, dd MMM yyyy HH:mm:ss z EEE MMM dd HH:mm:ss zzz yyyy yyyy-MM-dd'T'HH:mm:ss'Z' yyyy-MM-dd'T'HH:mm:ss.SSS'Z' yyyy-MM-dd'T'HH:mm:ssZ yyyy-MM-dd'T'HH:mm:ss.SSSZstatic Calendarparse(CharSequence text, boolean lenient, DateParser parser) 使用指定DateParser解析字符串为Calendarstatic LocalDateTimeparse(CharSequence text, String pattern) 构建LocalDateTime对象static DateTimeparse(CharSequence text, DateParser parser, boolean lenient) 构建DateTime对象static DateTime将特定格式的日期转换为Date对象static Calendar通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象static DateTimeparse(String text, DateFormat format) 构建DateTime对象static Calendar通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象static Calendar通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象static DateTimeparse(String text, DateParser parser) 构建DateTime对象static String将指定Calendar时间格式化为纯中文形式static CalendarparseByPatterns(String text, String... pattern) 通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象static CalendarparseByPatterns(String text, Locale locale, boolean lenient, String... pattern) 通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象static CalendarparseByPatterns(String text, Locale locale, String... pattern) 通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象static DateTimeparseCST(CharSequence text) 解析CST时间,格式: EEE MMM dd HH:mm:ss z yyyy(例如:Wed Aug 01 00:00:00 CST 2020)static DateTime解析日期字符串,忽略时分秒,支持的格式包括:static DateTimeparseDateTime(String text) 解析日期时间字符串,格式支持:static DateTime解析时间,格式HH:mm:ss,默认为1970-01-01static DateTimeparseTimeToday(String text) 解析时间,格式HH:mm:ss,日期默认为今天static DateTime解析UTC时间,格式: yyyy-MM-dd'T'HH:mm:ss'Z' yyyy-MM-dd'T'HH:mm:ss.SSS'Z' yyyy-MM-dd'T'HH:mm:ssZ yyyy-MM-dd'T'HH:mm:ss.SSSZ yyyy-MM-dd'T'HH:mm:ss+0800 yyyy-MM-dd'T'HH:mm:ss+08:00
-
Constructor Details
-
Formatter
public Formatter()
-
-
Method Details
-
format
按照给定的通配模式 YYYY-MM-DD HH:MM:SS ,将时间格式化成相应的字符串- Parameters:
date- 待格式化的时间- Returns:
- 格式化成功返回成功后的字符串, 失败返回null
-
format
根据特定格式格式化日期- Parameters:
date- 被格式化的日期format- 日期格式,常用格式见:Fields- Returns:
- 格式化后的字符串
-
format
根据特定格式格式化日期- Parameters:
date- 被格式化的日期format-DatePrinter或FormatBuilder- Returns:
- 格式化后的字符串
-
format
根据特定格式格式化日期- Parameters:
date- 被格式化的日期format-SimpleDateFormat- Returns:
- 格式化后的字符串
-
format
根据特定格式格式化日期- Parameters:
date- 被格式化的日期format-SimpleDateFormatFields.NORM_DATETIME_FORMAT- Returns:
- 格式化后的字符串
-
format
根据特定格式格式化日期- Parameters:
date- 被格式化的日期format- 日期格式,常用格式见:FieldstimeZone- 时区- Returns:
- 格式化后的字符串
-
format
按照给定的通配模式,格式化成相应的时间字符串- Parameters:
srcDate- 原始时间字符串srcPattern- 原始时间通配符destPattern- 格式化成的时间通配符- Returns:
- 格式化成功返回成功后的字符串, 失败返回""
-
format
将指定的日期转换成Unix时间戳- Parameters:
date- 需要转换的日期 yyyy-MM-dd HH:mm:ss- Returns:
- long 时间戳
-
format
将Unix时间戳转换成日期- Parameters:
timestamp- 时间戳- Returns:
- String 日期字符串
-
format
将Unix时间戳转换成日期- Parameters:
timestamp- 时间戳format- 格式- Returns:
- String 日期字符串
-
format
将指定的日期转换成Unix时间戳- Parameters:
date- 需要转换的日期format- 格式- Returns:
- long 时间戳
-
format
格式化日期时间 格式 yyyy-MM-dd HH:mm:ss- Parameters:
localDateTime- 被格式化的日期- Returns:
- 格式化后的字符串
-
format
根据特定格式格式化日期- Parameters:
localDateTime- 被格式化的日期format- 日期格式,常用格式见:Fields- Returns:
- 格式化后的字符串
-
format
格式化日期时间为指定格式 如果为Month,调用Enum.toString()- Parameters:
time-TemporalAccessorformatter- 日期格式化器,预定义的格式见:DateTimeFormatter- Returns:
- 格式化后的字符串
-
format
格式化日期时间为指定格式 如果为Month,调用Enum.toString()- Parameters:
time-TemporalAccessorformat- 日期格式- Returns:
- 格式化后的字符串
-
format
格式化为中文日期格式,如果isUppercase为false 则返回:2018年10月24日,否则,返回二〇一八年十月二十四日- Parameters:
date- 被格式化的日期isUppercase- 是否采用大写形式withTime- 是否包含时间部分- Returns:
- 中文日期字符串
-
format
将指定Calendar时间格式化为纯中文形式2018-02-24 12:13:14 转换为 二〇一八年二月二十四日(withTime为false) 2018-02-24 12:13:14 转换为 二〇一八年二月二十四日一十二时一十三分一十四秒(withTime为true)- Parameters:
calendar-CalendarwithTime- 是否包含时间部分- Returns:
- 格式化后的字符串
-
formatDate
格式化日期部分(不包括时间) 格式 yyyy-MM-dd- Parameters:
date- 被格式化的日期- Returns:
- 格式化后的字符串
-
formatDate
格式化日期部分(不包括时间) 格式 yyyy-MM-dd- Parameters:
date- 被格式化的日期isHttp- 是否http格式- Returns:
- 格式化后的字符串
-
formatTime
格式化时间 格式 HH:mm:ss- Parameters:
date- 被格式化的日期- Returns:
- 格式化后的字符串
-
formatBetween
格式化日期间隔输出- Parameters:
beginDate- 起始日期endDate- 结束日期units- 级别,按照天、小时、分、秒、毫秒分为5个等级- Returns:
- XX天XX小时XX分XX秒
-
formatBetween
格式化日期间隔输出,精确到毫秒- Parameters:
beginDate- 起始日期endDate- 结束日期- Returns:
- XX天XX小时XX分XX秒
-
formatBetween
格式化日期间隔输出- Parameters:
betweenMs- 日期间隔units- 级别,按照天、小时、分、秒、毫秒分为5个等级- Returns:
- XX天XX小时XX分XX秒XX毫秒
-
formatBetween
格式化日期间隔输出,精确到毫秒- Parameters:
betweenMs- 日期间隔- Returns:
- XX天XX小时XX分XX秒XX毫秒
-
parse
将指定Calendar时间格式化为纯中文形式2018-02-24 12:13:14 转换为 二〇一八年二月二十四日(withTime为false) 2018-02-24 12:13:14 转换为 二〇一八年二月二十四日一十二时一十三分一十四秒(withTime为true)- Parameters:
calendar-CalendarwithTime- 是否包含时间部分- Returns:
- 格式化后的字符串
-
parse
将日期字符串转换为DateTime对象,格式:- yyyy-MM-dd HH:mm:ss
- yyyy/MM/dd HH:mm:ss
- yyyy.MM.dd HH:mm:ss
- yyyy年MM月dd日 HH时mm分ss秒
- yyyy-MM-dd
- yyyy/MM/dd
- yyyy.MM.dd
- HH:mm:ss
- HH时mm分ss秒
- yyyy-MM-dd HH:mm
- yyyy-MM-dd HH:mm:ss.SSS
- yyyy-MM-dd HH:mm:ss.SSSSSS
- yyyyMMddHHmmss
- yyyyMMddHHmmssSSS
- yyyyMMdd
- EEE, dd MMM yyyy HH:mm:ss z
- EEE MMM dd HH:mm:ss zzz yyyy
- yyyy-MM-dd'T'HH:mm:ss'Z'
- yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
- yyyy-MM-dd'T'HH:mm:ssZ
- yyyy-MM-dd'T'HH:mm:ss.SSSZ
- Parameters:
text- 日期字符串- Returns:
- 日期
-
parse
构建LocalDateTime对象- Parameters:
text- 时间字符串(带格式)pattern- 使用Fields定义的格式- Returns:
- LocalDateTime对象
-
parse
构建DateTime对象- Parameters:
text- Date字符串format- 格式化器SimpleDateFormat- Returns:
- DateTime对象
-
parse
构建DateTime对象- Parameters:
text- Date字符串parser- 格式化器,FormatBuilder- Returns:
- DateTime对象
-
parse
将特定格式的日期转换为Date对象- Parameters:
text- 特定格式的日期pattern- 格式,例如yyyy-MM-dd- Returns:
- 日期对象
-
parse
通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象- Parameters:
text- 日期时间字符串,非空format- 需要尝试的日期时间格式数组,非空, 见SimpleDateFormat- Returns:
- 解析后的
Calendar
-
parse
通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象- Parameters:
text- 日期时间字符串,非空locale- 地区,当为null时使用Locale.getDefault()pattern- 需要尝试的日期时间格式数组,非空, 见SimpleDateFormat- Returns:
- 解析后的
Calendar
-
parse
构建DateTime对象- Parameters:
text- Date字符串parser- 格式化器,DateParserlenient- 是否宽容模式- Returns:
- DateTime对象
-
parse
通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象- Parameters:
text- 日期时间字符串,非空locale- 地区,当为null时使用Locale.getDefault()lenient- 日期时间解析是否使用严格模式pattern- 需要尝试的日期时间格式数组,非空- Returns:
- 解析后的
Calendar - See Also:
-
parseDate
解析日期字符串,忽略时分秒,支持的格式包括:yyyy-MM-dd yyyy/MM/dd yyyy.MM.dd yyyy年MM月dd日
- Parameters:
text- 标准形式的日期字符串- Returns:
- 日期对象
-
parseTime
解析时间,格式HH:mm:ss,默认为1970-01-01- Parameters:
text- 标准形式的日期字符串- Returns:
- 日期对象
-
parseDateTime
解析日期时间字符串,格式支持:yyyy-MM-dd HH:mm:ss yyyy/MM/dd HH:mm:ss yyyy.MM.dd HH:mm:ss yyyy年MM月dd日 HH:mm:ss
- Parameters:
text- 标准形式的时间字符串- Returns:
- 日期对象
-
parseTimeToday
解析时间,格式HH:mm:ss,日期默认为今天- Parameters:
text- 标准形式的日期字符串- Returns:
- 日期对象
-
parse
使用指定DateParser解析字符串为Calendar- Parameters:
text- 日期字符串lenient- 是否宽容模式parser-DateParser- Returns:
- 解析后的
Calendar,解析失败返回null
-
parseCST
解析CST时间,格式:- EEE MMM dd HH:mm:ss z yyyy(例如:Wed Aug 01 00:00:00 CST 2020)
- Parameters:
text- UTC时间- Returns:
- 日期对象
-
parseUTC
解析UTC时间,格式:- yyyy-MM-dd'T'HH:mm:ss'Z'
- yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
- yyyy-MM-dd'T'HH:mm:ssZ
- yyyy-MM-dd'T'HH:mm:ss.SSSZ
- yyyy-MM-dd'T'HH:mm:ss+0800
- yyyy-MM-dd'T'HH:mm:ss+08:00
- Parameters:
text- UTC时间- Returns:
- 日期对象
-
parseByPatterns
通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象- Parameters:
text- 日期时间字符串,非空pattern- 需要尝试的日期时间格式数组,非空, 见SimpleDateFormat- Returns:
- 解析后的
Calendar
-
parseByPatterns
通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象- Parameters:
text- 日期时间字符串,非空locale- 地区,当为null时使用Locale.getDefault()pattern- 需要尝试的日期时间格式数组,非空, 见SimpleDateFormat- Returns:
- 解析后的
Calendar
-
parseByPatterns
public static Calendar parseByPatterns(String text, Locale locale, boolean lenient, String... pattern) 通过给定的日期格式解析日期时间字符串 传入的日期格式会逐个尝试,直到解析成功,返回Calendar对象- Parameters:
text- 日期时间字符串,非空locale- 地区,当为null时使用Locale.getDefault()lenient- 日期时间解析是否使用严格模式pattern- 需要尝试的日期时间格式数组,非空- Returns:
- 解析后的
Calendar - See Also:
-
newSimpleFormat
创建SimpleDateFormat,注意此对象非线程安全 此对象默认为严格格式模式,即parse时如果格式不正确会报错- Parameters:
pattern- 表达式- Returns:
SimpleDateFormat
-
newSimpleFormat
创建SimpleDateFormat,注意此对象非线程安全 此对象默认为严格格式模式,即parse时如果格式不正确会报错- Parameters:
pattern- 表达式locale-Locale,null表示默认timeZone-TimeZone,null表示默认- Returns:
SimpleDateFormat
-
getShotName
获取时长单位简写- Parameters:
unit- 单位- Returns:
- 单位简写名称
-
isOverlap
检查两个时间段是否有时间重叠 重叠指两个时间段是否有交集- x > b || a > y 无交集
- 则有交集的逻辑为 !(x > b || a > y) 根据德摩根公式,可化简为 x <= b && a <= y
- Parameters:
realStartTime- 第一个时间段的开始时间realEndTime- 第一个时间段的结束时间startTime- 第二个时间段的开始时间endTime- 第二个时间段的结束时间- Returns:
- true 表示时间有重合
-