Java 时间格式化原来这么多玩法

开发 后端
时间过得真是快,现在已经是2022年了。作为开发来说,时间处理是非常繁琐的。从Java 8开始有了新的时间API、时间的处理更加优雅,不再需要借助三方类库,而且线程安全。

时间过得真是快,现在已经是2022年了。作为开发来说,时间处理是非常繁琐的。从Java 8开始有了新的时间API、时间的处理更加优雅,不再需要借助三方类库,而且线程安全。今天来梳理一下新API的格式化,而且还要玩点你没玩过的东西,点赞、转发、再看走起来。

新API的时间格式化

新的时间API的时间格式化由java.time.format.DateTimeFormatter负责。

本地化时间

结合枚举FormatStyle定义的风格,DateTimeFormatter预定义了基于本地(Locale)风格的时间格式。我们来看这段代码:

  1. String format = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) 
  2.         .format(ZonedDateTime.now()); 

如果你在中国,格式化结果:

  1. 2022年1月6日 下午4:22:01 

如果你在美国:

  1. Jan 6, 2022, 4:21:10 PM 

有三个静态方法及其重载来格式化本地化时间,具体已经整理成了思维导图:

本地化日期时间的处理

ISO/RFC规范格式

DateTimeFormatter还内置了ISO和RFC的时间格式,基于内置的DateTimeFormatter静态实例。举个例子:

  1. // 静态实例 
  2.    DateTimeFormatter isoWeekDateFormatter = DateTimeFormatter.ISO_WEEK_DATE; 
  3.    // 执行格式化 
  4.    String format = isoWeekDateFormatter.format(LocalDateTime.now()); 
  5.    // format = 2022-W01-4 
  6.    System.out.println("format = " + format); 

其它的如下表格所示:

内置ISO、RFC规范格式

范式格式化

这种方式应该是我们最常用的方式了。通过字母和符号来构建一个范式(Patterns),使用ofPattern(String)或者ofPattern(String, Locale)方法传递构建的范式。例如,d MMM uuuu将把2011-12-03格式化为2011年12月3日。从一个模式中创建的格式可以根据需要多次使用,它是不可改变的,并且是线程安全的。

相信什么yyyy-MM-dd HH:mm:ss你都玩腻了,胖哥给你看点你没见过的:

  1. // 最后面是两个V 不是W 单个V会报错  
  2. String pattern = "G uuuu'年'MMMd'日' ZZZZZ VV"
  3. String format= DateTimeFormatter.ofPattern(pattern).format(ZonedDateTime.now()); 
  4. // format = 2022-W01-4 
  5. System.out.println("format = " + format); 

输出:

  1. format = 公元 2022年1月7日 +08:00 Asia/Shanghai 

表格给你整理好了,自己试一试:

 

格式化符号对照表

 

责任编辑:武晓燕 来源: 码农小胖哥
相关推荐

2020-11-03 10:21:33

MySQL

2023-07-26 00:32:33

注解抽象spring

2018-06-26 15:00:24

Docker安全风险

2021-01-14 05:08:44

编译链接

2024-03-11 10:15:29

2021-01-14 10:24:55

压缩集合方式

2017-07-04 14:01:40

机房机柜

2024-05-13 16:22:25

固态硬盘接口硬盘

2017-07-12 08:20:32

闪存用途企业

2020-05-20 16:54:47

数据分页显示函数

2024-08-28 08:56:24

2024-04-26 00:03:00

计算机CPU关系

2022-09-05 08:06:36

SpringBoot时间格式化

2021-07-26 14:34:02

springboot 时间格式化项目

2014-11-25 15:02:01

客服系统

2009-08-03 14:25:59

C#日期格式化

2024-01-31 12:34:16

panic错误检测recover

2018-01-31 16:12:47

笔记本轻薄本游戏本

2024-01-08 22:03:22

python代码开发
点赞
收藏

51CTO技术栈公众号