Java中DateTimeFormatter的使用方法和案例

 更新时间:2023年10月06日 10:17:05   作者:fking86  
在Java中,DateTimeFormatter类用于格式化和解析日期时间对象,它是日期时间格式化的强大而灵活的工具,本文将和大家一起探讨Java中DateTimeFormatter的使用方法和案例,需要的朋友可以参考下

作用

1.本地化时间

本地化时间指根据指定的语言环境显示时间

1

1.1.创建DateTimeFormatter时指定Locale

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINA);

1.2.使用该DateTimeFormatter格式化日期时间

LocalDate date = LocalDate.now();
String cnDate = date.format(formatter); 
这样就可以得到适合中国需求的日期格式"2021-10-01"。

1.3.可以通过Locale.US、Locale.UK等地区,从而得到不同格式

DateTimeFormatter usFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy", Locale.US);
DateTimeFormatter ukFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.UK);
LocalDate date = LocalDate.now();
String usDate = date.format(usFormatter); // 10/01/2021
String ukDate = date.format(ukFormatter); // 01/10/2021

1.4.使用预定义的格式化常量指定地区

LocalDate date = LocalDate.now();
String cnDate = date.format(FormatStyle.LONG, Locale.CHINA); 
String frDate = date.format(FormatStyle.FULL, Locale.FRANCE);

2.ISO/RFC规范格式

ISO和RFC定义了标准的日期时间格式,可以直接使用:

LocalDate date = LocalDate.now();
// ISO格式
String isoDate = date.format(ISO_LOCAL_DATE); 
// RFC格式 
String rfcDate = date.format(RFC_1123_DATE_TIME);
格式名称描述格式示例
BASIC_ISO_DATE基本ISO日期yyyyMMdd20111203
ISO_LOCAL_DATEISO本地化日期yyyy-MM-dd2011-12-03
ISO_OFFSET_DATE带偏移时区的ISO日期yyyy-MM-ddXX2011-12-03+01:00
ISO_DATEISO 日期,可能带偏移量yyyy-MM-dd 或者 yyyy-MM-ddXX2011-12-03+01:00’;2011-12-03
ISO_LOCAL_TIMEISO本地化时间HH:mm:ss10:15:30
ISO_OFFSET_TIME带偏移时区的ISO时间HH:mm:ssXX10:15:30+01:00
ISO_TIMEISO时间,可能带偏移量HH:mm:ss 或者 HH:mm:ssXX10:15:30+01:00;10:15:30
ISO_LOCAL_DATE_TIMEISO本地日期和时间yyyy-MM-dd’T’HH:mm:ss2011-12-03T10:15:30
ISO_OFFSET_DATE_TIME带偏移时区的ISO日期yyyy-MM-dd’T’HH:mm:ssXX2011-12-03T10:15:30+01:00
ISO_ZONED_DATE_TIME带时区的ISO日期和时间yyyy-MM-dd’T’HH:mm:ssZZZZ2011-12-03T10:15:30+01:00
ISO_DATE_TIME带Zoneld的ISO日期和时间yyyy-MM-dd’T’HH:mm:ssxxx2011-12-03T10:15:30+01:00
ISO_ORDINAL_DATE年份和一年的第N天yyyy-DDD2012-337
ISO_WEEK_DATE年份-第N周-周Nxxxx-'W’ww-e2012-W48-6
ISO_INSTANTISO时刻2011-12-03T10:15:30Z
RFC_1123_DATE_TIMERFC 1123/RFC 822Tue, 3 Jun 2008 11:05:30 GMT

3.范式格式化

常见格式化:

年份:

  • YYYY :4位数字表示的年份,例如:2023
  • yyyy :4位数字表示的年份,例如:2023
  • YY :2位数字表示的年份,例如:23

月份:

  • MM :2位数字表示的月份,例如:01表示一月,12表示十二月
  • MMM :缩写形式的月份,例如:Jan表示一月,Dec表示十二月
  • MMMM :完整形式的月份,例如:January表示一月,December表示十二月

日:

  • DD dd :2位数字表示的日期,例如:01表示1号,31表示31号

星期几:

  • ddd :缩写形式的星期几,例如:Mon表示星期一,Sun表示星期日
  • dddd :完整形式的星期几,例如:Monday表示星期一,Sunday表示星期日

时间:

  • HH :24小时制的小时,例如:00表示午夜12点,23表示晚上11点
  • hh :12小时制的小时,例如:01表示上午1点,12表示下午12点
  • mm :分钟,例如:00表示整点,30表示30分钟
  • ss :秒,例如:00表示整分,59表示59秒
  • a :上午/下午标识,例如:AM表示上午,PM表示下午

参数列表整理:

符号含义示例
G显示纪元文本AD(公元)
u年份2023
У公元年份2023
D一年的第N天300
M或者L月份7;07; Jul; July;
d一个月的第N目9
Q或者q年份中的季度2; 02; Q2; 2rd quarter
Y以周为基础的年份1997;97
w以周为基础的年份中的周30
W一个月的第N周3
E星期Tue; Tuesday; T
e或者c本地化星期2; 02; Tue; Tuesday; T
F一个月的第N周2
a一天中的上午(am)或者下午(pm)PM
h上午下午12小时制(1-12)10
K上午下午11小时制(1-11)1
k上午下午(1-24)14
H小时制(0-23)1
m小时中的分钟30
s分秒43
S当前秒的毫秒800
A当前天的毫秒数1111
n当前秒的纳秒数987654321
N当前天的纳秒数1234000000
V时区IDAmerica/Los_Angeles; Z; -08:30
z时区名称Pacific Standard Time; PST
O本地化时区漂移GMT+8; GM T+08:00; UTC-08:00
Xoffset-XZ; -08; -0830; -08:30; -083015; -08:30:15
xoffset-x+0000; -08; -0830; -08:30; -083015; -08:30:15
Zoffset-Z+0000; -0800; -08:00;
ppad modifier1
分隔符
‘’不被解析的文字
[可选部分开始
]可选部分结束

示例:

String pattern = "G uuuu'年'MMMd'日' ZZZZZ VV";
String format= DateTimeFormatter.ofPattern(pattern).format(ZonedDateTime.now());
System.out.println(format);

格式化结果显示:

公元 2023年10月01日 +08:00 Asia/hangzhou

范式格式化还提供了一些常用的格式化模式:

LocalDateTime dt = LocalDateTime.now();
// SHORT范式格式化  
String shortDt = dt.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT));
// MEDIUM范式格式化
String mediumDt = dt.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)); 

写在最后

以上就是Java中DateTimeFormatter的使用方法和案例的详细内容,更多关于Java DateTimeFormatter使用的资料请关注脚本之家其它相关文章!

相关文章

  • 关于ElasticSearch的常用增删改查DSL和代码

    关于ElasticSearch的常用增删改查DSL和代码

    这篇文章主要介绍了关于ElasticSearch的常用增删改查DSL和代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • mybatis输出SQL格式化方式

    mybatis输出SQL格式化方式

    这篇文章主要介绍了mybatis输出SQL格式化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java基础之List内元素的排序性能对比

    Java基础之List内元素的排序性能对比

    这篇文章主要介绍了Java基础之List内元素的排序性能对比,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • java生成自增编号数字的问题

    java生成自增编号数字的问题

    这篇文章主要介绍了java生成自增编号数字的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • JAVA中寻找最大的K个数解法

    JAVA中寻找最大的K个数解法

    寻找最大的K个数,这个是面试中比较常见的一道题,网上也有很多例子,在这里是比较传统的解法
    2014-04-04
  • mybatis注解与xml常用语句汇总

    mybatis注解与xml常用语句汇总

    最近一直在用mybatis,由于需要使用到了动态sql,遇到了一些问题,现在来总结一下,经验教训。下面这篇文章主要给大家总结介绍了mybatis注解与xml常用语句的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09
  • Java实现一个简单的缓存方法

    Java实现一个简单的缓存方法

    本篇文章主要介绍了Java实现一个简单的缓存方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 浅析Java迭代器Iterator和Iterable的区别

    浅析Java迭代器Iterator和Iterable的区别

    Java语言中,Iterator和Iterable都是用来遍历集合类数据结构的接口,虽然它们有很多相似的地方,但在具体实现中却有着一些不同之处,本文将详细分析它们的区别,并提供相应的代码示例,需要的朋友可以参考下
    2023-07-07
  • classloader类加载器_基于java类的加载方式详解

    classloader类加载器_基于java类的加载方式详解

    下面小编就为大家带来一篇classloader类加载器_基于java类的加载方式详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 使用idea+gradle编译spring5.x.x源码分析

    使用idea+gradle编译spring5.x.x源码分析

    这篇文章主要介绍了idea + gradle编译spring5.x.x源码,在编译spring5源码时需要将项目导入idea中然后编译配置,本文给大家讲解的非常详细,需要的朋友可以参考下
    2022-04-04

最新评论