使用SimpleDateFormat格式化日期需创建实例并调用format()方法,但其非线程安全,推荐用ThreadLocal或Java 8的DateTimeFormatter替代。

在Java中,使用
SimpleDateFormat
Date
使用
SimpleDateFormat
SimpleDateFormat
format()
Date
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatterExample {
public static void main(String[] args) {
// 1. 获取当前日期时间
Date now = new Date();
// 2. 定义你想要的日期时间格式
// 例如:"yyyy-MM-dd HH:mm:ss" 会显示像 "2023-10-27 15:30:00" 这样的格式
// "yyyy年MM月dd日 E HH时mm分ss秒" 会显示像 "2023年10月27日 星期五 15时30分00秒"
String pattern = "yyyy-MM-dd HH:mm:ss"; // 我个人最常用的一种,简洁明了
// 3. 创建 SimpleDateFormat 实例
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
// 4. 使用 format() 方法将 Date 对象格式化为字符串
String formattedDate = formatter.format(now);
System.out.println("原始日期: " + now);
System.out.println("格式化后的日期: " + formattedDate);
// 反过来,如果你有一个日期字符串,想把它解析成 Date 对象,也可以用 parse() 方法
String dateString = "2024-01-01 08:00:00";
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date parsedDate = parser.parse(dateString);
System.out.println("解析后的日期: " + parsedDate);
} catch (java.text.ParseException e) {
System.err.println("日期字符串解析失败: " + e.getMessage());
}
}
}这里面的模式字符串(pattern string)是关键。
y
M
d
H
H
M
s
s
E
MM
MMM
MMMM
说实话,
SimpleDateFormat
立即学习“Java免费学习笔记(深入)”;
简单来说,
SimpleDateFormat
format()
parse()
为了解决这个问题,通常有几种做法:
每次使用时都创建新实例:这是最直接,也最笨但最安全的方法。每次需要格式化或解析日期时,都
new SimpleDateFormat()
// 每次都创建新实例,确保线程安全
public String formatThreadSafe(Date date) {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
}使用ThreadLocal
SimpleDateFormat
import java.text.SimpleDateFormat;
import java.util.Date;
public class ThreadLocalDateFormat {
private static final ThreadLocal<SimpleDateFormat> formatter = ThreadLocal.withInitial(
() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
public static String format(Date date) {
return formatter.get().format(date);
}
public static Date parse(String dateString) throws java.text.ParseException {
return formatter.get().parse(dateString);
}
public static void main(String[] args) {
// 示例:在多个线程中使用
for (int i = 0; i < 5; i++) {
new Thread(() -> {
try {
String formatted = format(new Date());
System.out.println(Thread.currentThread().getName() + " formatted: " + formatted);
Date parsed = parse("2023-11-11 11:11:11");
System.out.println(Thread.currentThread().getName() + " parsed: " + parsed);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
}, "Thread-" + i).start();
}
}
}这种方式在Java 8之前是处理
SimpleDateFormat
在我看来,Java 8引入的
java.time
SimpleDateFormat
DateTimeFormatter
DateTimeFormatter
java.time
LocalDate
LocalTime
LocalDateTime
ZonedDateTime
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class ModernDateFormatterExample {
public static void main(String[] args) {
// 1. 获取当前日期时间
LocalDateTime now = LocalDateTime.now();
// 2. 定义你想要的日期时间格式
// DateTimeFormatter 的模式与 SimpleDateFormat 类似,但更严格和清晰
String pattern = "yyyy-MM-dd HH:mm:ss";
// 我个人觉得,对于一些标准格式,直接用预定义的常量更方便,比如 ISO_LOCAL_DATE_TIME
// DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; // 2023-10-27T15:30:00
// 3. 创建 DateTimeFormatter 实例
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
// 4. 使用 format() 方法将 LocalDateTime 对象格式化为字符串
String formattedDateTime = now.format(formatter);
System.out.println("原始日期时间: " + now);
System.out.println("格式化后的日期时间: " + formattedDateTime);
// 反过来,解析字符串到 LocalDateTime
String dateTimeString = "2024-01-01 09:30:15";
try {
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
System.out.println("解析后的日期时间: " + parsedDateTime);
} catch (DateTimeParseException e) {
System.err.println("日期时间字符串解析失败: " + e.getMessage());
}
// 对于只处理日期或时间的情况,也有对应的类
// LocalDate today = LocalDate.now();
// DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
// System.out.println("格式化日期: " + today.format(dateFormatter));
}
}DateTimeFormatter
SimpleDateFormat
java.time
DateTimeFormatter
以上就是如何在Java中使用SimpleDateFormat格式化日期的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号