如何格式化时间java
使用 SimpleDateFormat 格式化时间
SimpleDateFormat 是 Java 中用于格式化和解析日期的传统类。以下是一个示例代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formattedDate = sdf.format(new Date());
System.out.println(formattedDate);
}
}
输出格式为 2023-10-05 14:30:45,其中模式字符串 yyyy-MM-dd HH:mm:ss 可以自定义调整。
使用 DateTimeFormatter(Java 8+)
Java 8 引入了 java.time 包,推荐使用 DateTimeFormatter 进行更现代的日期时间格式化:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
String formattedDate = LocalDateTime.now().format(formatter);
System.out.println(formattedDate);
}
}
输出示例:2023/10/05 14:30。
格式化时区时间
若需处理时区,可使用 ZonedDateTime 和 DateTimeFormatter:
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;
public class Main {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
System.out.println(zonedDateTime.format(formatter));
}
}
输出示例:2023-10-05 10:30:45 EDT。

自定义模式符号说明
yyyy:四位年份MM:两位月份(01-12)dd:两位日期HH:24小时制小时mm:分钟ss:秒z:时区缩写
线程安全的格式化
DateTimeFormatter 是线程安全的,而 SimpleDateFormat 不是。多线程环境下建议使用 DateTimeFormatter 或为每个线程创建独立的 SimpleDateFormat 实例。






