1. DateTimeFormatter 类
特殊DateTimeFormatter
类进入日期时间 API。它的目的是让程序员尽可能容易地将日期和时间转换成他们想要的准确格式。我们很高兴地报告 Java 的创造者取得了成功。
使用起来非常简单。首先,您需要创建一个DateTimeFormatter
类并传入指定日期和时间显示方式的模式:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
哪里dtf
是DateTimeFormatter
变量。是类的静态方法。pattern是一个字符串,指定将用于显示日期和时间的模式。DateTimeFormatter.ofPattern()
DateTimeFormatter
例子
代码 | 控制台输出 |
---|---|
|
|
在上面的例子中,我们使用ofPattern()
方法创建了一个DateTimeFormatter
基于模式的对象。在下一行中,我们使用该format()
方法将对象转换LocalDateTime
为字符串。您会在屏幕上看到结果。
您几乎可以将任何对象从 Date Time API 传递给该format()
方法。
staticofPattern()
也很简单:它接受一个模式作为参数并返回一个DateTimeFormatter
对象。最有趣的部分是在模式中。
2.格式化模式
作为模式传入的字符串在显示信息时用作模式。MM替换为月份数,dd替换为月份中的第几天,yy替换为年份数。字母的大小写很重要。
这些时间模式的完整表格是这样的:
信 | 意义 |
---|---|
是 | 年 |
米 | 月 |
d | 天 |
H | 小时 |
米 | 分钟 |
秒 | 秒 |
小号 | 千分之一秒 |
n | 纳秒。 |
不是特别难记。
但是为什么示例中的模式包含重复的字母 MM、dd 和 yy?好吧,这就是它变得更有趣的地方。
大概的概念
字母的数量会影响文本的长度。字母越多,文本就越长。
如果字母 H 指定一次,则 9 小时将显示为 9,但如果字母 H 连续指定两次,则 9 小时将显示为 09。
如果字母 y 连续指定 2 次,则使用 2 位数字书写年份。如果它连续出现 4 次,则使用 4 位数字。
如果字母 M 连续指定 2 次,则写入月份数。如果连续 3 次,则使用月份名称(前 3 个字母)。如果连续 4 次,则使用月份的全名。
例子:
代码 | 控制台输出 |
---|---|
|
|
3.完整的形态表
完整的表格非常大而且超级有趣:
图案 | 图案的变化 | 例子 | 描述 |
---|---|---|---|
是 | yy, yyyy | 19; 2019 | 年 |
大号/大号 | 男,MM,MMM,MMMM,MMMMM | 1; 01; 一月;一月; 杰 | 月 |
d | d, dd | 9; 09 | 天 |
H | 哈,哈 | 2; 02 | 小时 |
米 | 米,毫米 | 3; 03 | 分钟 |
秒 | 小号,小号 | 5; 05 | 秒 |
小号 | S、SS、SSS、... | 1; 12; 123 | 千分之一秒 |
n | n | 123456789 | 纳秒级 |
G | G、GGGG、GGGGG | 广告; 公元; A; | 时代 |
q/q | q, qq, qqq, qqqq | 3; 03; Q3;第三季 | 四分之一 |
w | w | 13 | 一年中的一周 |
W | W | 3个 | 每月的第几周 |
乙 | EEE, EEEE, EEEEE | 星期一;周一; 米 | 一周中的天 |
电子邮件 | e, ee, eee, eeee, eeeee | 1; 01; 星期一;周一; 米 | 一周中的天 |
A | A | 下午 | 上午或下午 |
H | H | 12 | 12 小时制。 |
V | 维维 | 欧洲/赫尔辛基 | 时区 |
z | zzzzz | 欧洲东部时间; 东欧标准时间 | 时区 |
欧 | 啊啊啊 | 格林威治标准时间+2;格林威治标准时间+02:00 | 时区 |
顺便说一下,这实际上不是一个完整的版本。您可以在此处找到最完整的版本。
4.解析时间
该类DateTimeFormatter
的另一个有趣之处在于它不仅能够根据给定模式将日期和时间转换为字符串,而且还能执行反向操作!
解析字符串是将其拆分为有意义的标记的过程。
这是它的样子:
代码 | 控制台输出 |
---|---|
|
|
首先,我们创建一个DateTimeFormatter
对象并设置用于解析的模式。
然后我们调用LocalDate.parse()
orLocalTime.parse()
或LocalDateTime.parse()
方法并将要解析的字符串与对象一起传入DateTimeFormatter
,该对象了解如何解析传递的文本以及应该使用什么模式来解析。
另一个例子:这次我们将解析时间。
代码 | 控制台输出 |
---|---|
|
|
GO TO FULL VERSION