博客
关于我
java日期格式化DateTimeFormatter
阅读量:782 次
发布时间:2019-03-24

本文共 1980 字,大约阅读时间需要 6 分钟。

前言

使用旧的
Date对象时,常用
SimpleDateFormat进行格式化显示。而使用新的
LocalDateTime
ZonedLocalDateTime时,格式化显示需要使用
DateTimeFormatter。与
SimpleDateFormat不同的是,
DateTimeFormatter不仅不是单一对象,还具备线程安全特性。这意味着在使用
DateTimeFormatter时,只需创建一个实例即可全局使用,而无需在方法内部频繁创建新对象。尽管如此,关于线程安全的知识点我们会在后续内容中详细探讨。

1. 年份

G:公元表示。
u
y
Y:年份表示。
y
Y的区别在于
Y用于不带年份的表示方式,而
y则表示当前年份。

2. 月份

M:当前月份的数字表示。
L:表示当前年份的第几月份。

3. 星期几

E:星期几表示(例如:星期日)。
F:表示当前月份已经过了多少个完整的星期。
W:表示当前年份已经过了多少个完整的星期。
w:表示当前年份从某一年开始已经过了多少个完整的星期。

4. 天数

D:表示已过的天数。
d:表示当前的日期。

5. 12小时计数

a:上午或下午的表示。
h:12小时制的小时数,默认逢0变为12。
K:12小时制的小时数,逢12变为0,范围是0-11。

6. 24小时计数

H:24小时制的小时数,范围是0-23。
k:24小时制的小时数,逢0变为24,范围是1-24。

7. 分钟

m:表示当前小时已经过了多少分钟。

8. 秒

s:表示当前分钟已经过了多少秒。

9. 毫秒

A:表示当前秒已经过了多少毫秒。

10. 纳秒

n:表示当前秒已经过了多少纳秒。
N:表示当前日期已经过了多少纳秒(每天过失去24小时,所以一天等于
N=24*60*60*1e9=86,400,000,000纳秒)。

示例代码测试

LocalDateTime提供了对日期时间进行操作的便捷方法,可以直接获取当前时间或指定时间的
LocalDateTime实例。以下是一些常用的示例代码:
LocalDateTime now = LocalDateTime.now();  // 获取当前执行时刻  System.out.println("当前时间:" + now);  // 时间格式化示例  System.out.println("用格式化标记输出:");  // 年份示例  System.out.println(now.format(DateTimeFormatter.ofPattern("Y")));  // 年份表示(不带年前缀)  System.out.println(now.format(DateTimeFormatter.ofPattern("y")));  // 月份示例  System.out.println(now.format(DateTimeFormatter.ofPattern("M")));  // 星期示例  System.out.println(now.format(DateTimeFormatter.ofPattern("E")));  System.out.println(now.format(DateTimeFormatter.ofPattern("a")));  // 12小时制示例  System.out.println(now.format(DateTimeFormatter.ofPattern("h")));  // 24小时制示例  System.out.println(now.format(DateTimeFormatter.ofPattern("H")));  // 分钟和秒示例  System.out.println(now.format(DateTimeFormatter.ofPattern("m")));  System.out.println("指定时间的例子:");  LocalDateTime now1 = LocalDateTime.of(2020, 1, 1, 23, 59, 59);  now1 = now1.plusSeconds(2);  System.out.println("2020-01-01 23:59:59 加2秒后变为" + now1);

通过这些代码示例,可以看出DateTimeFormatter对日期时间格式化的强大灵活性。与传统的SimpleDateFormat相比,它不仅更安全,而且支持更高级的格式化需求,如时间区支持和线程安全等。 如果需要改造旧项目中的日期时间显示逻辑,可以考虑将所有SimpleDateFormat实例替换为DateTimeFormatter,以提升代码的线程安全性和整体可维护性。

转载地址:http://iivkk.baihongyu.com/

你可能感兴趣的文章
npm报错Cannot find module ‘webpack‘ Require stack
查看>>
npm报错Failed at the node-sass@4.14.1 postinstall script
查看>>
npm报错fatal: Could not read from remote repository
查看>>
npm报错File to import not found or unreadable: @/assets/styles/global.scss.
查看>>
npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
查看>>
npm淘宝镜像过期npm ERR! request to https://registry.npm.taobao.org/vuex failed, reason: certificate has ex
查看>>
npm版本过高问题
查看>>
npm的“--force“和“--legacy-peer-deps“参数
查看>>
npm的安装和更新---npm工作笔记002
查看>>
npm的常用操作---npm工作笔记003
查看>>
npm的常用配置项---npm工作笔记004
查看>>
npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
查看>>
npm编译报错You may need an additional loader to handle the result of these loaders
查看>>
npm设置淘宝镜像、升级等
查看>>
npm设置源地址,npm官方地址
查看>>
npm设置镜像如淘宝:http://npm.taobao.org/
查看>>
npm配置安装最新淘宝镜像,旧镜像会errror
查看>>
NPM酷库052:sax,按流解析XML
查看>>
npm错误 gyp错误 vs版本不对 msvs_version不兼容
查看>>
npm错误Error: Cannot find module ‘postcss-loader‘
查看>>