DateTimeFormatter.ofPattern使用详解

一、日期时间解析与格式化

Java中关于日期时间的处理除了最开始的Date类和Calendar类等基础类外,在java.time包中引入了新的日期时间处理类。其中,DateTimeFormatter.ofPattern方法尤为常用。

DateTimeFormatter.ofPattern方法用于创建一个DateTimeFormatter对象,从而实现日期时间的解析和格式化。具体来说,它的作用主要有两个:

一是将日期时间格式化为指定的字符串格式;

二是将字符串格式的日期时间解析为对应的LocalDate、LocalTime或LocalDateTime等日期时间类。

下面先给出示例代码:

// 根据自定义格式创建DateTimeFormatter对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 格式化当前时间
String formattedStr = formatter.format(LocalDateTime.now());
// 解析字符串为LocalDateTime对象
LocalDateTime dateTime = LocalDateTime.parse(formattedStr, formatter);

在上述代码中,“yyyy-MM-dd HH:mm:ss”即为自定义的日期时间格式,其中“yyyy”表示4位数字的年份,“MM”表示2位数字的月份,“dd”表示2位数字的日期,“HH”表示2位数字的小时,“mm”表示2位数字的分钟,“ss”表示2位数字的秒数。

需要注意的是,这里的字母代表的含义是固定的,无法进行调整或扩展。为了满足不同的日期时间需求,我们可以使用不同的组合方式,创建不同的格式化器。

二、格式化展示

使用DateTimeFormatter.ofPattern方法,可以将日期时间对象格式化为指定的字符串形式,以便进行展示、存储或传输等操作。

下面给出一些基本的格式化示例:

// 标准格式化器,显示日期、时间和上午/下午标识
DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
String formattedStr1 = formatter1.format(LocalDateTime.now());
// 格式化为"2022年12月31日 星期六 下午02时18分38秒"
System.out.println(formattedStr1);

// 自定义格式化器,只显示日期("yyyy-MM-dd"格式)
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedStr2 = formatter2.format(LocalDate.now());
// 格式化为"2022-12-31"
System.out.println(formattedStr2);

// 自定义格式化器,只显示时间("HH-mm-ss"格式)
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("HH-mm-ss");
String formattedStr3 = formatter3.format(LocalTime.now());
// 格式化为"14-34-00"
System.out.println(formattedStr3);

在这些示例中,我们可以看到不同的格式化器创建方式和不同的日期时间格式。

三、日期时间解析

除了将日期时间格式化为指定字符串形式展示外,我们同样也可以将字符串格式的日期时间解析成对应的日期时间对象。

下面给出几个解析器示例:

// 标准解析器,将字符串解析为日期时间对象
DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
LocalDateTime dateTime1 = LocalDateTime.parse("Dec 31, 2022 2:18:38 PM", formatter1);
// 输出为"2022-12-31T14:18:38"
System.out.println(dateTime1);

// 自定义解析器,将字符串解析为LocalDate对象
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
LocalDate date = LocalDate.parse("2022年11月30日", formatter2);
// 输出为"2022-11-30"
System.out.println(date);

// 自定义解析器,将字符串解析为LocalTime对象
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("HH/mm/ss");
LocalTime time = LocalTime.parse("14/34/00", formatter3);
// 输出为"14:34:00"
System.out.println(time);

在这些示例中,我们可以看到将字符串解析为日期时间对象的实际操作过程。

四、时区和本地化

除了基本的格式化和解析操作外,DateTimeFormatter还支持时区和本地化的设置,以便进行更加精确的日期时间处理。

下面给出两个示例:

// 标准格式化器,带有时区信息,显示日期、时间和上午/下午标识
DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
        .withLocale(Locale.GERMANY)
        .withZone(ZoneId.systemDefault());
String formattedStr1 = formatter1.format(ZonedDateTime.now());
// 输出为"31.12.2022 17:50:03"
System.out.println(formattedStr1);

// 自定义格式化器,带有时区信息,仅显示日期("yyyy/MM/dd"格式)
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy/MM/dd")
        .withZone(ZoneId.of("Asia/Shanghai"));
String formattedStr2 = formatter2.format(ZonedDateTime.now());
// 输出为"2022/12/31"
System.out.println(formattedStr2);

这里,我们可以看到如何针对时区和本地化信息,调整DateTimeFormatter的行为。比如第一个示例中,我们可以看到日期时间对象被转换为德语格式并被调整到了本地时区。

总之,DateTimeFormatter.ofPattern是一个非常常用的日期时间处理方法,它支持各种自定义的日期时间格式和解析器,以及多种时区和本地化设置,非常适合用于各类项目中。

原创文章,作者:XOKGY,如若转载,请注明出处:https://www.506064.com/n/361735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XOKGYXOKGY
上一篇 2025-02-25 18:17
下一篇 2025-02-25 18:17

相关推荐

  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • C语言贪吃蛇详解

    一、数据结构和算法 C语言贪吃蛇主要运用了以下数据结构和算法: 1. 链表 typedef struct body { int x; int y; struct body *nex…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25

发表回复

登录后才能评论