java格式化date成字符串的详细方法和示例
作者:leijmdas
在Java编程中,字符串格式化是一项基本且重要的技能,这篇文章主要介绍了java格式化date成字符串的详细方法和示例,文中通过代码 介绍的非常详细,需要的朋友可以参考下
前言
在Java中将java.util.Date对象格式化为字符串,主要使用SimpleDateFormat类(或Java 8及更高版本的DateTimeFormatter)。以下是详细方法和示例:
一、使用SimpleDateFormat(Java 7及以下)
步骤:
创建SimpleDateFormat对象:指定日期格式模式(如
"yyyy-MM-dd HH:mm:ss")。调用format()方法:将
Date对象转换为字符串。
常用格式符号:
| 符号 | 含义 | 示例 |
|---|---|---|
yyyy | 四位年份 | 2025 |
MM | 两位月份 | 06 |
dd | 两位日期 | 24 |
HH | 24小时制 | 14 |
hh | 12小时制 | 02 |
mm | 分钟 | 30 |
ss | 秒 | 45 |
SSS | 毫秒 | 789 |
E | 星期几 | Tue |
a | AM/PM标记 | PM |
z | 时区 | CST |
代码示例:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// 创建Date对象(当前时间)
Date date = new Date();
// 示例1:格式化为"年-月-日 时:分:秒"
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str1 = sdf1.format(date); // 如:2025-06-24 15:30:45
System.out.println(str1);
// 示例2:格式化为"月/日/年 时:分 AM/PM"
SimpleDateFormat sdf2 = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
String str2 = sdf2.format(date); // 如:06/24/2025 03:30 PM
System.out.println(str2);
// 示例3:自定义格式(带星期和时区)
SimpleDateFormat sdf3 = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z");
String str3 = sdf3.format(date); // 如:Tue, 24 Jun 2025 15:30:45 CST
System.out.println(str3);
}
}
二、注意事项
线程安全问题
SimpleDateFormat非线程安全。多线程环境下建议:每次创建新实例(性能较低),或
使用
ThreadLocal封装实例。private static final ThreadLocal<SimpleDateFormat> threadSafeFormat = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd")); String formattedDate = threadSafeFormat.get().format(date);
异常处理
解析字符串时需捕获
ParseException,但格式化操作一般无需异常处理。时区设置
默认使用系统时区。可通过
setTimeZone()修改:sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
三、Java 8+ 推荐方案(DateTimeFormatter)
Java 8引入的java.time.format.DateTimeFormatter线程安全且更灵活:
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); // 如:2025-06-24 15:30:45
System.out.println(formattedDate);
}
}
四、总结
| 方法 | 适用场景 | 线程安全 |
|---|---|---|
SimpleDateFormat | Java 7及以下 | ❌ 否 |
DateTimeFormatter | Java 8+ | ✅ 是 |
简单需求:直接使用
SimpleDateFormat.format()。高并发场景:用
ThreadLocal或升级到Java 8的DateTimeFormatter。复杂操作:优先选择
java.time包(如LocalDateTime、ZonedDateTime)。
可通过在线工具(如 SimpleDateFormat Tester)验证格式模式是否正确。
总结
到此这篇关于java格式化date成字符串的文章就介绍到这了,更多相关java格式化date成字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
