java时间如何相加
在Java中实现时间相加的方法
使用java.time包(推荐)
Java 8及以上版本提供了java.time包,包含LocalTime、LocalDateTime等类,支持直接进行时间加减操作。
示例:LocalTime相加
import java.time.LocalTime;
LocalTime time1 = LocalTime.of(10, 30); // 10:30
LocalTime time2 = LocalTime.of(2, 15); // 02:15
LocalTime result = time1.plusHours(time2.getHour()).plusMinutes(time2.getMinute());
System.out.println(result); // 输出: 12:45
示例:LocalDateTime相加
import java.time.LocalDateTime;
import java.time.Duration;
LocalDateTime datetime1 = LocalDateTime.of(2023, 1, 1, 10, 30);
LocalDateTime datetime2 = LocalDateTime.of(2023, 1, 1, 2, 15);
Duration duration = Duration.between(datetime1, datetime2).abs();
LocalDateTime result = datetime1.plus(duration);
System.out.println(result); // 输出: 2023-01-01T12:45
使用Calendar类(旧版兼容)
适用于Java 7及以下版本,通过Calendar进行时间加减。
import java.util.Calendar;
Calendar cal1 = Calendar.getInstance();
cal1.set(Calendar.HOUR_OF_DAY, 10);
cal1.set(Calendar.MINUTE, 30);
Calendar cal2 = Calendar.getInstance();
cal2.set(Calendar.HOUR_OF_DAY, 2);
cal2.set(Calendar.MINUTE, 15);
cal1.add(Calendar.HOUR_OF_DAY, cal2.get(Calendar.HOUR_OF_DAY));
cal1.add(Calendar.MINUTE, cal2.get(Calendar.MINUTE));
System.out.println(cal1.getTime()); // 输出: 12:45的时间对象
使用Duration或Period处理时间差
适用于需要精确计算时间间隔的场景。

import java.time.Duration;
import java.time.LocalTime;
LocalTime start = LocalTime.of(8, 0);
LocalTime end = LocalTime.of(10, 30);
Duration duration = Duration.between(start, end);
LocalTime newTime = start.plus(duration);
System.out.println(newTime); // 输出: 10:30
注意事项
- 时间相加可能跨越日期边界(如超过24小时),需根据业务逻辑处理。
- 推荐优先使用
java.time包,避免Date和Calendar的线程安全问题。






