栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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格式不同,则您可以指定一个单独的格式化程序。

示例
public static void main(String[] args) {
        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        //必须得为1999-09-21,不能是1999-9-21
        LocalDate 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-21
        DateTimeFormatter 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-21
        LocalDateTime localDateTime = LocalDateTime.parse("1999-09-21 12:12:12", formatter2);
        System.out.println(localDateTime);
        String format2 = formatter2.format(LocalDateTime.now());
        System.out.println(format2);
    }

结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号