Java日期格式化方法总结

在Java中,日期格式化主要涉及将 DateLocalDateLocalDateTime 等日期时间对象转换为指定格式的字符串,或将字符串解析为日期对象。以下是两种常用的日期格式化方式:


一、使用 SimpleDateFormat(旧版API,Java 8之前)

SimpleDateFormat 是Java早期版本中用于格式化和解析日期的类,但它是非线程安全的,需谨慎使用。

1. 格式化为字符串

java

复制

下载

import java.text.SimpleDateFormat;
import java.util.Date;public class Main {public static void main(String[] args) {Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String formattedDate = sdf.format(date);System.out.println(formattedDate); // 例如:2023-10-05 15:30:45}
}
2. 字符串解析为日期

java

复制

下载

String dateStr = "2023-10-05";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(dateStr); // 需处理 ParseException
常用模式符号:
  • yyyy:四位年份(如2023)

  • MM:两位月份(01-12)

  • dd:两位日期(01-31)

  • HH:24小时制小时(00-23)

  • hh:12小时制小时(01-12)

  • mm:分钟(00-59)

  • ss:秒(00-59)

  • SSS:毫秒(000-999)

  • E:星期几(如Mon、Tue)


二、使用 DateTimeFormatter(新版API,Java 8+)

Java 8引入了 java.time 包,提供了线程安全的 LocalDateLocalDateTime 和 DateTimeFormatter

1. 格式化为字符串

java

复制

下载

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class Main {public static void main(String[] args) {LocalDateTime now = LocalDateTime.now();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String formattedDate = now.format(formatter);System.out.println(formattedDate); // 例如:2023-10-05 15:30:45}
}
2. 字符串解析为日期

java

复制

下载

String dateStr = "2023-10-05 15:30";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter); // 需处理 DateTimeParseException
3. 预定义的格式

java

复制

下载

// 使用内置标准格式(如ISO日期时间格式)
String isoFormat = LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
// 输出:2023-10-05T15:30:45.123
常用模式符号(与旧版类似,但更严格):
  • uuuu:四位年份(替代yyyy,推荐使用)

  • MM/dd/HH/mm/ss:同上

  • a:上午/下午标记(如AM/PM)


三、时区处理

若需处理时区,可使用 ZonedDateTime

java

复制

下载

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;ZonedDateTime zonedDateTime = ZonedDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
String formatted = zonedDateTime.format(formatter); // 例如:2023-10-05 15:30:45 CST

四、注意事项

  1. 线程安全

    • SimpleDateFormat 非线程安全,多线程环境下需同步或使用ThreadLocal。

    • DateTimeFormatter 是线程安全的,可全局共享。

  2. 错误处理

    • 解析字符串时需捕获 ParseException(旧版)或 DateTimeParseException(新版)。

  3. 性能

    • 新版API(java.time)性能更优,推荐使用。


完整示例(Java 8+)

java

复制

下载

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class DateTimeExample {public static void main(String[] args) {// 格式化LocalDateTime now = LocalDateTime.now();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm");String formatted = now.format(formatter);System.out.println("当前时间:" + formatted); // 例如:2023年10月05日 15:30// 解析String dateStr = "2023年12月31日 23:59";LocalDateTime parsedDate = LocalDateTime.parse(dateStr, formatter);System.out.println("解析后的时间:" + parsedDate);}
}

建议优先使用 java.time 包(Java 8+),其设计更现代且线程安全。旧版 SimpleDateFormat 仅适用于兼容遗留代码。

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

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

相关文章

【NLP】27. 语言模型训练以及模型选择:从预训练到下游任务

语言模型训练:从预训练到下游任务 本文详细讲解大型语言模型(LLMs)是如何训练的,包括不同的模型类型(Encoder、Decoder、Encoder-Decoder),以及各类预训练任务的原理、对比、适用场景&#xff0…

通过 ModernBERT 实现零样本分类的性能提升

文本分类 是机器学习中最基础的任务之一,拥有悠久的研究历史和深远的实用价值。更重要的是,它是许多实际项目中不可或缺的组成部分,从搜索引擎到生物医学研究都离不开它。文本分类方法被广泛应用于科学论文分类、用户工单分类、社交媒体情感分…

基于SpringBoot网上书店的设计与实现

pom.xml配置文件 1. 项目基本信息(没什么作用) <groupId>com.spring</groupId> <!--项目组织标识&#xff0c;通常对应包结构--> <artifactId>boot</artifactId> <!--项目唯一标识--> <version>0.0.1-SNAPSHOT</ve…

STM32H743单片机实现ADC+DMA多通道检测+事件组

在上个文章基础上改用事件组进行处理&#xff0c;以便实时任务。 stm32cubeMX自动生成代码 osEventFlagsId_t adctestEventHandle; const osEventFlagsAttr_t adctestEvent_attributes {.name "adctestEvent" };adctestEventHandle osEventFlagsNew(&adctest…

AI Agent开发第57课-AI用在销售归因分析场景中-用随机森林从0构建自己的“小模型”

开篇 在前一篇《机器学习的基础-线性回归如何应用在商业场景中》里,我们说到了如果我们只是简单的分析和预测一下投入广告费用和销售额增长是否存在必然关系,我们用了线性回归法得到了分析,得到的分析结果极其精准,以及提到了:如果当销售因素是非线性的并且有着额外一些如…

Linux运维——Vim技巧三

Vim技巧 一、按 按模 模式 式匹 匹配 配及 及按 按原 原义 义匹 匹配1.1、调整查找模式的大小写敏感性1.2、按正则表达式查找时&#xff0c;使用 \v 模式开关1.3、按原义查找文本时&#xff0c;使用 \V 原义开关1.4、使用圆括号捕获子匹配1.5、界定单词的边界1.6、界定匹配的边…

NLTK库(1): 数据集-语料库(Corpus)

1.简介 NLTK &#xff08;Natural Language Toolkit&#xff09; 是自然语言处理&#xff08;NLP&#xff09;任务的 Python 库&#xff0c;内置大量NLP数据集与计算包。 NLP数据集也叫语料库 (Corpus), 若无特殊格式或标记&#xff0c;数据集通常来自txt等文本文件。 本教程…

spring详解-循环依赖的解决

Spring循环依赖 重点提示&#xff1a; 本文都快写完了&#xff0c;发现“丈夫” 的英文是husband… 在“②有AOP循环依赖” 改过来了&#xff0c;前面用到的位置太多了就没改。我是说怎么idea的hansband英文下面怎么有波浪线。各位能够理解意思就行&#xff0c;英文拼写不要过…

随机快速排序算法

一、随机化原理 经典快速排序 选取固定的“枢轴”&#xff08;通常取第一个或最后一个元素&#xff09;&#xff0c;在最坏情况下&#xff08;如已经有序&#xff09;会退化为 。 随机快速排序 在每次分区前随机地从当前区间 [p..r] 中等概率选取一个枢轴&#xff0c;将它与末…

数据可视化与分析

数据可视化的目的是为了数据分析&#xff0c;而非仅仅是数据的图形化展示。 项目介绍 项目案例为电商双11美妆数据分析&#xff0c;分析品牌销售量、性价比等。 数据集包括更新日期、ID、title、品牌名、克数容量、价格、销售数量、评论数量、店名等信息。 1、数据初步了解…

美团Java高级配送员面经分享|玩梗版

美团Java高级配送员面经分享&#xff01;纯玩梗&#xff01;

在windows中卸载mysql

一、停止服务 winR快捷键 -->> 输入services.msc -->> 进入服务窗口关闭Mysql服务 二、卸载程序&#xff08;可选&#xff09; 如果是通过解压压缩包安装的则跳过这一步&#xff0c;如果是使用.msi文件驱动安装则需要卸载 控制面板 -->> 程序和功能 -->…

https://juejin.cn/editor/drafts/7262346366541070395

.Net Core从零学习搭建权限管理系统教程 推荐一组WPF自定义控件开源项目。 项目简介 这是基于WPF开发的&#xff0c;为开发人员提供了一组方便使用自定义组件&#xff0c;并提供了各种常用的示例。 包含组件&#xff1a;数据表格、属性列表、树形列表、选色器、单选框列表、…

三、网络管理

网络管理 一、IP地址 原理&#xff1a; 定义与作用&#xff1a;IP 地址是互联网协议地址&#xff0c;用于在网络中唯一标识一台设备。它如同现实生活中的家庭住址&#xff0c;确保数据能准确无误地从源设备传输到目标设备。地址分类&#xff1a;IP 地址分为 IPv4 和 IPv6 两种…

Auto.js 脚本:清理手机数据但保留账号

Auto.js 脚本&#xff1a;清理手机数据但保留账号 以下是一个使用 Auto.js 实现的脚本&#xff0c;它可以帮你清理手机数据&#xff08;类似恢复出厂设置&#xff09;&#xff0c;同时尽可能保留已登录的账号状态。请注意&#xff0c;这个脚本不能完全等同于真正的恢复出厂设置…

LeetCode 热题 100 279. 完全平方数

LeetCode 热题 100 | 279. 完全平方数 大家好&#xff0c;今天我们来解决一道经典的动态规划问题——完全平方数。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求找到和为给定整数 n 的完全平方数的最少数量。 问题描述 给定一个整数 n&#xff0c;返回和为 n 的完全…

【coze】手册小助手(提示词、知识库、交互、发布)

【coze】手册小助手&#xff08;提示词、知识库、交互、发布&#xff09; 1、创建智能体2、添加提示词3、创建知识库4、测试智能体5、添加交互功能6、发布智能体 1、创建智能体 2、添加提示词 # 角色 你是帮助用户搜索手册资料的AI助手 ## 工作流程 ### 步骤一:查询知识库 1.每…

一个基于Asp.Net Core + Angular + Bootstrap开源CMS系统

从零学习构建一个完整的系统 推荐一个功能强大、易于扩展、安全可靠的开源内容管理系统&#xff0c;适用于各种类型和规模的网站。 项目简介 MixCoreCMS是一个基于.NET Core框架的开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;提供了丰富的的基础功能和插件&…

【Python】常用命令提示符

Python常用的命令提示符 一、Python环境基础命令【Windows】 于Windows环境下&#xff0c;针对Python&#xff0c;在CMD&#xff08;命令提示符&#xff09;常用的命令以及具体用法&#xff0c;怎么用&#xff1b;   主要包含&#xff1a;运行脚本、包管理、虚拟环境、调试与…

提示词优化:检索历史提示确定方向→生成候选提示并控制修改幅度→基于准确率迭代优化

提示词优化器 Unleashing the Potential of Large Language Models as Prompt Optimizers: Analogical Analysis with Gradient - based Model Optimizers 《Unleashing the Potential of Large Language Models as Prompt Optimizers: Analogical Analysis with Gradient - …