当前位置: 首页 > java >正文

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.xdnf.cn/news/4344.html

相关文章:

  • DApp 开发:开启去中心化应用新时代
  • Spring事务和事务传播机制
  • C语言| 递归和循环的优缺点
  • 塔能水泵节能方案:精准驱动工厂能耗优化
  • 展锐Android13禁止用户使用超级省电
  • 新一代Python专业编译器Nuitka简介
  • ROS2:自定义接口文件(无废话)
  • 多模态理论知识
  • 二叉树与堆排序(概念|遍历|实现)
  • python酒店在线预定管理系统-酒店客房管理系统-快捷酒店入住系统
  • 【Linux系统】vim编辑器的使用
  • FoMo 数据集是一个专注于机器人在季节性积雪变化环境中的导航数据集,记录了不同季节(无雪、浅雪、深雪)下的传感器数据和轨迹信息。
  • C语言编程--递归程序--求数组的最大元素值
  • 油气地震资料信号处理中的NMO(正常时差校正)
  • 【网络篇】传输层TCP协议的确认应答,超时重传机制
  • IT咨询——企业数据资产怎样评估
  • 满分PPT | 基于数据运营的新型智慧城市实践与思考智慧城市数据中台解决方案智能建筑与智慧城市建设方案
  • 基于nacos实现动态线程池设计与实践:告别固定配置,拥抱弹性调度
  • LabVIEW与 IMAQ Vision 机器视觉应用
  • C++类与对象基础续
  • 15.命令模式:思考与解读
  • 毫米波雷达原理(最通俗的解释)
  • MATLAB程序演示与编程思路,相对导航,四个小车的形式,使用集中式扩展卡尔曼滤波(fullyCN-EKF)
  • go 编译报错:build constraints exclude all Go files
  • Python使用爬虫ip抓取热点新闻
  • autojspro怎么免费用
  • 【原创分享】魔音变声器内含超多语音包实时变声
  • C#中从本地(两个路径文件夹)中实时拿图显示到窗口中并接收(两个tcp发送的信号)转为字符串显示在窗体中实现检测可视化
  • 【Wandb】搜索框仅支持正则匹配,不接受“tags:“前缀查询
  • 知乎前端面试题及参考答案