0


Java8后 日期时间格式化及解析

简介

在Java 8之前,我们使用SimpleDateFormat和DateFormat类来表示一种格式,这存在很多问题,例如它们笨重,易变且不是线程安全的,这意味着无法共享它们,并且每次都需要要将String转换为Date,必须创建一个新的DateFormat对象。 尽管将SimpleDateFormat封装到线程局部变量中确实可以缓解,但这还不够。

JDK 8在新的DateTimeFormatter类中解决了该问题,该类可用于定义日期和时间格式,例如“ yyyy-MM-dd HH:mm:SS”,用于指定格式的语法与我们之前在SimpleDateFormat类中使用的语法相同,但此类既是线程安全的又是不可变的,这意味着您可以在线程之间共享其实例。 理想情况下,可以将DateTimeFormatter的引用存储到静态变量中以使其成为全局变量。

使用DateTimeFormatter的另一个优点是它提供了几个内置的格式化程序,例如java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME,它可以将日期表示为
“ 2017-08-03T10:15:30”。 您可以在Javadoc中看到内置格式化程序的完整列表,也可以阅读Really In耐心的Java SE 8以获得更多信息。

获得格式化程序后,解析或格式化日期就像调用方法一样容易。 您只需要调用LocalDateTime.parse()方法即可在Java 8中将String转换为LocalDateTime。parse()接受String并根据DateTimeFormatter指定的格式将其解析为LocalDateTime实例。 parse()方法也被重载,默认情况下它使用ISO_LOCAL_DATE_TIME格式,即“ yyyy-MM-dd HH:mm”,即“ 2017-08-03T10:15:30”,但是如果您的String格式不同,则您可以指定一个单独的格式化程序。

示例

publicstaticvoidmain(String[] args){DateTimeFormatter formatter1 =DateTimeFormatter.ofPattern("yyyy-MM-dd");//必须得为1999-09-21,不能是1999-9-21LocalDate localDate =LocalDate.parse("1999-09-21", formatter1);System.out.println(localDate);String format1 = formatter1.format(LocalDate.now());System.out.println(format1);DateTimeFormatter formatter2 =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//必须得为1999-09-21,不能是1999-9-21DateTimeFormatter formatter3 =DateTimeFormatter.ofPattern("HH:mm:ss");LocalTime localTime =LocalTime.parse("12:12:12", formatter3);System.out.println(localTime);String format3 = formatter3.format(LocalTime.now());System.out.println(format3);//必须得为1999-09-21,不能是1999-9-21LocalDateTime localDateTime =LocalDateTime.parse("1999-09-21 12:12:12", formatter2);System.out.println(localDateTime);String format2 = formatter2.format(LocalDateTime.now());System.out.println(format2);}

结果:
在这里插入图片描述

标签: java 格式化 解析

本文转载自: https://blog.csdn.net/lianghecai52171314/article/details/123795653
版权归原作者 梁云亮 所有, 如有侵权,请联系我们删除。

“Java8后 日期时间格式化及解析”的评论:

还没有评论