前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 8 新特性|(新)日期API_格式化

Java 8 新特性|(新)日期API_格式化

作者头像
Java小技巧
发布2022-05-23 12:54:25
3630
发布2022-05-23 12:54:25
举报
文章被收录于专栏:Java小技巧

一、java.time.format 包:类

说明

DateTimeFormatter

用于打印和解析日期时间对象的格式化程序

DateTimeFormatterBuilder

创建日期时间格式化样式的构建器

DecimalStyle

日期和时间格式中使用的本地化十进制样式

二、java.time.format 包:枚举

枚举

说明

FormatStyle

包含了本地化日期,时间或日期时间格式器的样式的枚举

ResolverStyle

包含了解决日期和时间的不同方法的枚举

SignStyle

包含了如何处理正/负号的方法的枚举

TextStyle

包含了文本格式和解析的样式的枚举

三、DateTimeFormatter 类

DateTimeFormatter 类用于打印和解析日期时间对象的格式化器,它是格式化日期时间的最重要的类。一个最终类,只能实例化,不能被扩展和继承。此类提供打印和解析的主要应用程序入口点,并提供 DateTimeFormatter 的常见模式

  • 使用预定义的常量,比如 ISO_LOCAL_DATE
  • 使用模式字母,例如 uuuu-MMM-dd
  • 使用本地化样式,例如 long 或 medium

所有的日期时间类,包括本地日期时间和包含时区的日期时间类,都提供了两个重要的方法

1、 格式化:format(DateTimeFormatter formatter) 2、 解析:parse(CharSequence text, DateTimeFormatter formatter)

代码范例

代码语言:javascript
复制
package com.sjh.test.java8.time;

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterTest {

    public static void main(String args[]) {
        DateTimeFormatterTest tester = new DateTimeFormatterTest();
        tester.run();
    }

    public void run() {

        ZonedDateTime now = ZonedDateTime.now();
        System.out.println("当前时间是: " + now);

        System.out.println("另一种表示形式:" + now.format(DateTimeFormatter.RFC_1123_DATE_TIME));
    }
}

运行结果:

代码语言:javascript
复制
/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/...com.sjh.test.java8.time.DateTimeFormatterTest
当前时间是: 2020-06-10T16:11:14.783+08:00[Asia/Shanghai]
另一种表示形式:Wed, 10 Jun 2020 16:11:14 +0800

Process finished with exit code 0

调用 DateTimeFormatter.ofPattern() 方法创建自己的日期时间格式:

代码语言:javascript
复制
package com.sjh.test.java8.time;

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterTest1 {

    public static void main(String args[]) {
        DateTimeFormatterTest1 tester = new DateTimeFormatterTest1();
        tester.run();
    }

    public void run() {

        ZonedDateTime now = ZonedDateTime.now();
        System.out.println("当前时间是: " + now);

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd H:m:s");
        System.out.println("另一种表示形式:" + now.format(formatter));
    }
}

运行结果:

代码语言:javascript
复制
/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/...com.sjh.test.java8.time.DateTimeFormatterTest1
当前时间是: 2020-06-10T16:14:13.855+08:00[Asia/Shanghai]
另一种表示形式:2020/06/10 16:14:13

Process finished with exit code 0

调用 LocalDateTime 类的静态方法 parse() 将刚刚自定义的日期时间格式给解析回来:

代码语言:javascript
复制
package com.sjh.test.java8.time;

import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterTest2 {

    public static void main(String args[]) {
        DateTimeFormatterTest2 tester = new DateTimeFormatterTest2();
        tester.run();
    }

    public void run() {

        ZonedDateTime now = ZonedDateTime.now();
        System.out.println("当前时间是: " + now);

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd H:m:s");
        String text = now.format(formatter);
        System.out.println("另一种表示形式:" + text );

        LocalDateTime parsed = LocalDateTime.parse(text, formatter);
        System.out.println("解析后:" + parsed );
    }
}

运行结果:

代码语言:javascript
复制
/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/...com.sjh.test.java8.time.DateTimeFormatterTest2
当前时间是: 2020-06-10T16:16:17.048+08:00[Asia/Shanghai]
另一种表示形式:2020/06/10 16:16:17
解析后:2020-06-10T16:16:17

Process finished with exit code 0

end

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java小技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档