Java中DateTimeFormatter的使用方法和案例

news2024/11/25 3:07:11

🔔简介

在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)); 

🔔写在最后

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1053895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ORA-01034: ORACLE not available?一文解决

1.情况描述 oracle用户sqlplus登陆数据库(11gR2 单机asm),进去查询一些基本的视图发现报错 ORA-01034: ORACLE not available,详细如下 [oracleoomcserver db_1]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production…

ClassNotFoundException与NoClassDefFoundError

如果这springboot服务启动时两个报错同时出现,那大概率是依赖间冲突导致的 查资料发现是springcloud的依赖版本和springboot的依赖版本不兼容,顺藤摸瓜找到springcloud jar包中调用org.springframework.boot.context.properties.ConfigurationProperties…

酷开科技OTT大屏营销,做好价值塑造

洞察2023,随着技术与数据入局OTT领域,程序化投放、数据追踪、人群定位等等能力正逐步深入,围绕OTT大屏营销,新营销的价值也正在被重构。随着国内5G、人工智能、云计算等技术不断普及,大屏营销服务成为OTT行业发展的主流…

笔试强训Day9

T1:走方格的方案数 链接:走方格的方案数_牛客题霸_牛客网 (nowcoder.com) 描述 请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法…

SpringCloud Alibaba - Sentinel 微服务保护解决雪崩问题、Hystrix 区别、安装及使用

目录 一、Sentinel 1.1、背景:雪崩问题 1.2、雪崩问题的解决办法 1.2.1、超时处理 缺陷:为什么这里只是 “缓解” 雪崩问题,而不是百分之百解决了雪问题呢? 1.2.2、舱壁模式 缺陷:资源浪费 1.2.3、熔断降级 1.…

【汇编的救赎】汇编语言入门必看基本知识点

汇编语言是一种低级语言,用于编写计算机程序。它直接操作计算机硬件,提供了对处理器寄存器、内存和指令等底层资源的直接访问。汇编语言的语法简单明了,每条指令都对应着一条机器指令,具有高度的灵活性和效率。通过汇编语言&#…

MySQL SQL性能分析(SQL优化 一)

在开发和维护数据库应用程序时,优化SQL查询的性能是至关重要的。MySQL提供了一些强大的工具和技术,帮助我们进行SQL性能分析,找出潜在的瓶颈并进行相应的优化。 查看SQL的执行频率 show [ session| global ] status 命令查看服务器状态信息…

web:[RoarCTF 2019]Easy Calc

题目 进入页面是一个计算器的页面 随便试了一下 查看源代码看看有什么有用的信息 访问一下这个calc.php 进行代码审计 <?php error_reporting(0); if(!isset($_GET[num])){show_source(__FILE__); }else{$str $_GET[num];$blacklist [ , \t, \r, \n,\, ", , \[, \]…

Python语言:函数的使用

按我的理解&#xff0c;编程世界中的函数就是一个模块&#xff1a;提前写好一个特动功能&#xff0c;方便以后直接调用且实现其功能&#xff0c;可以大大提高工作效率。 今天我们通过一个python语言的函数使用小案例来进一步加深对函数的理解。案例名字为S的银行之行。S是一个吝…

1.6.C++项目:仿muduo库实现并发服务器之channel模块的设计

项目完整版在&#xff1a; 文章目录 一、channel模块&#xff1a;事件管理Channel类实现二、提供的功能三、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&#xff08;三&#xff09;功能设计 四、代码&#xff08;一&#xff09;框架&#xff08;二…

Mac卸载不了软件怎么办?2023年最新MacBook卸载大集合

很多朋友在卸载软件的时候&#xff0c;可能会遇到卸载不了的情况。软件正在使用、软件来自第三方等原因都可能导致我们无法将其成功卸载。本篇文章就将告诉您“Mac卸载不了软件”的解决办法。 为什么Mac卸载不了软件&#xff1f; Mac卸载不了软件的原因很多&#xff0c;常见的…

Excel如何快速将表格纵向数据变成横向

第一&#xff0c;打开Excel文件&#xff0c;我们看到表格里面的内容为纵向排列&#xff1b; 第二&#xff0c;要将表格纵向排列变成横向&#xff0c;首先选中单元格内容&#xff0c;按CTRLC快速复制。 第三&#xff0c;选中一个空白单元格&#xff0c;点击鼠标右键&#xff0c;…

SentenceTransformer 之论文解读

摘要 原文标题&#xff1a;Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks 链接&#xff1a;https://arxiv.org/pdf/1908.10084.pdf 尽管Bert和RoBERTa在句子对回归任务上&#xff0c;例如语义文本相似度&#xff08;Semantic Text Similarity&#xff09;…

300元以内最好的开放式耳机是哪款、百元开放式耳机推荐

如果你是一位运动用户&#xff0c;或者耳道比较敏感的用户&#xff0c;耳机一定要选开放式的。开放式耳机的优点是在听歌的能够兼顾环境音&#xff0c;避免户外运动时出现的安全问题。在耳机的佩戴上舒适性上也比入耳式耳机好&#xff0c;不会对耳朵造成压迫导致不适。不足是音…

高效记录,事项井然——OmniOutliner 5 Pro for Mac 信息大纲记录工具

OmniOutliner 5 Pro for Mac 是一款强大的信息大纲记录工具&#xff0c;帮助您高效组织和管理各种信息。无论是个人笔记、工作计划、项目管理还是学习资料&#xff0c;这款应用都能满足您的需求&#xff0c;并使您的日常工作更加井然有序。 OmniOutliner 5 Pro 提供了一套丰富…

为何每个开发者都在谈论Go?

目录 一、引言Go的历史回顾关键时间节点 使用场景Go的语言地位技术社群与企业支持资源投入和生态系统 二、简洁的语法结构基本组成元素变量声明与初始化代码示例 类型推断函数与返回值代码示例输出 接口与结构体&#xff1a;组合而非继承错误处理&#xff1a;明确而不是异常小结…

什么是数据库锁(Lock)?有哪些类型的锁

数据库锁&#xff08;Lock&#xff09;&#xff1a;保护数据完整性与并发性的关键 数据库锁&#xff08;Lock&#xff09;是在数据库管理系统中用于管理并发访问数据的重要机制。它们确保了多个用户或事务可以同时访问数据库&#xff0c;同时保护数据的完整性。在本文中&#…

JJJ:添加开机自启动项

比如我希望一个截图软件能开机自启动&#xff1a; 1、打开任务管理器&#xff1a; 进入启动栏&#xff1a; 发现没有snipaste可以设置 2、win r&#xff0c; 输入 shell:startup 然后回弹出一个新的窗口&#xff0c;把截图软件的快捷方式放里头 这样snipaste就能开机自启动…

Python报错:KeyError: ‘820‘

Python报错&#xff1a;KeyError: ‘820’ 问题描述 原因 操作的表格列名是数字 NIRdata[820] Rdata[630]以上是出错行&#xff0c;dataframe的这种索引方式不支持用数字。 解决方案 先修改列名为字符 然后将出错行改为对应列名 NIRdata[nir] Rdata[r]

QSS之QLineEdit

QLineEdit我们在开发过程中是经常使用的&#xff0c;一般情况下默认的风格是不适合设计师的要求&#xff0c;本篇介绍QLineEdit的基本qss风格&#xff1a; 1.基本属性设置 QLineEdit{background-color:#FFFFFF;color:#333333;border:none;} 2.悬浮状态设置 QLineEdit:hover…