java 解析日期格式
自Java 几乎 开始以来,Java开发人员就通过java.util.Date类(自JDK 1.0起)和java.util.Calendar类(自JDK 1.1起 )来处理日期和时间。 在这段时间内,成千上万(甚至数百万)的Java开发人员已使用java.text.DateFormat和java.text.SimpleDateFormat格式化并解析了Java日期和时间。 鉴于多年来这样做的频率,不足为奇的是,有很多关于这些类的日期和时间的解析和格式设置的 在线 示例和教程 。 经典的Java教程在“ 格式设置”课程 ( Dates and Times )中介绍了这些java.util和java.text类。 Java教程中新的Date Time路径涵盖了Java 8中有关日期和时间以及它们的格式和解析的新类。 这篇文章提供了一些实际的例子。
在通过示例演示Java 8样式的日期/时间解析/格式化之前,先比较一下DateFormat / SimpleDateFormat和DateTimeFormatter的Javadoc描述。 下表包含可区分的信息,这些信息可通过比较每个格式类的Javadoc来直接或间接收集。 从此表中可能最重要的观察结果是,新的DateTimeFormatter
是线程安全的且不可变的,并且DateTimeFormatter
提供了用于解析和格式化日期和时间的API的概述。
特性 | DateFormat / SimpleDateFormat | DateTimeFormatter |
---|---|---|
目的 | “以与语言无关的方式格式化和解析日期或时间” | “用于打印和解析日期时间对象的格式化程序。” |
主要用于 | java.util.Date java.util.Calendar |
java.time.LocalDate java.time.LocalTime java.time.LocalDateTime java.time.OffsetTime java.time.OffsetDateTime java.time.ZonedDateTime java.time.Instant |
线程安全 | “日期格式不同步。” | “此类是不可变的并且是线程安全的。” |
直接格式化 | 格式(日期) | 格式(TemporalAccessor) |
直接解析 | parse(String) | 解析(CharSequence,TemporalQuery) |
间接格式化 | 无[除非您使用Groovy的Date.format(String)扩展名) | LocalDate.format(DateTimeFormatter) LocalTime.format(DateTimeFormatter) LocalDateTime.format(DateTimeFormatter) OffsetTime.format(DateTimeFormatter) Offse |