java时间如何转化
Java 时间转化方法
时间戳与日期互转
将时间戳(毫秒)转为 Date 或 LocalDateTime:
long timestamp = System.currentTimeMillis();
Date date = new Date(timestamp); // 传统方式
LocalDateTime localDateTime = Instant.ofEpochMilli(timestamp)
.atZone(ZoneId.systemDefault())
.toLocalDateTime(); // Java 8+
将 Date 或 LocalDateTime 转为时间戳:
Date date = new Date();
long timestamp = date.getTime(); // 传统方式
LocalDateTime now = LocalDateTime.now();
long timestamp = now.atZone(ZoneId.systemDefault())
.toInstant()
.toEpochMilli(); // Java 8+
字符串与日期互转
使用 SimpleDateFormat(传统方式):

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(new Date()); // 日期转字符串
Date date = sdf.parse("2023-10-01 12:00:00"); // 字符串转日期
使用 DateTimeFormatter(Java 8+):
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
String dateStr = now.format(formatter); // 日期转字符串
LocalDateTime parsedDate = LocalDateTime.parse("2023-10-01 12:00:00", formatter); // 字符串转日期
时区转换
将时间转换为其他时区:

LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zoned = localDateTime.atZone(ZoneId.of("Asia/Shanghai"))
.withZoneSameInstant(ZoneId.of("America/New_York"));
System.out.println(zoned.toLocalDateTime());
时间差计算
计算两个时间点之间的差值(Java 8+):
LocalDateTime start = LocalDateTime.of(2023, 10, 1, 10, 0);
LocalDateTime end = LocalDateTime.of(2023, 10, 1, 12, 30);
Duration duration = Duration.between(start, end);
System.out.println(duration.toHours() + "小时"); // 输出:2小时
日期加减
对日期进行加减操作:
LocalDateTime now = LocalDateTime.now();
LocalDateTime future = now.plusDays(7).minusHours(3); // 加7天减3小时
兼容性说明
- 传统方式(
Date、SimpleDateFormat)适用于 Java 7 及以下版本。 - Java 8 及以上推荐使用
java.time包(LocalDateTime、ZonedDateTime等),线程安全且功能更丰富。






