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

举报
码农小胖哥 发表于 2022/03/31 23:33:13 2022/03/31
【摘要】 时间过得真是快,现在已经是2022年了。作为开发来说,时间处理是非常繁琐的。从Java 8开始有了新的时间API、时间的处理更加优雅,不再需要借助三方类库,而且线程安全。今天来梳理一下新API的格式化,而且还要玩点你没玩过的东西,点赞、转发、再看走起来。 新API的时间格式化 新的时间API的时间格式化由java.time...

3cdf11fba212fe3c8ff5184dd40fb6ea.gif

时间过得真是快,现在已经是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());

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

202216日 下午4:22:01
  

如果你在美国:

Jan 620224:21:10 PM
  

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

c082007329edadcc506ed2ab5ca9f5c9.png 本地化日期时间的处理

ISO/RFC规范格式

DateTimeFormatter还内置了ISORFC的时间格式,基于内置的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);

其它的如下表格所示:

bd962729cd67fd2fbc6e828e91a6d286.png 内置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);

输出:

format = 公元 202217日 +08:00 Asia/Shanghai
  

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

3eb811e436a2bf0e895a8c95617121c0.png 格式化符号对照表

根据JSON示例自动转成对象类,这个IDEA插件绝了

2022-01-05

33329bc61dedcb54f4d4769432fbfaf5.png

2022 年对Java的一些期待和预测

2022-01-01

e43ad59aadad3a24ec33bbe897ec8beb.png

Maven中央仓库新增依赖漏洞提醒功能

2021-12-31

0204a8237da1e5a1f417c77ffc1deaaa.png

55d1184441103acabc270a918d87a04d.gif

文章来源: felord.blog.csdn.net,作者:码农小胖哥,版权归原作者所有,如需转载,请联系作者。

原文链接:felord.blog.csdn.net/article/details/122375091

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。