1.使用 DateCalendar 结合(推荐)

代码展示

Date now = new Date(); // 获取当前时间
Calendar calendar = Calendar.getInstance(); // 创建一个 Calendar 实例
calendar.setTime(now); // 将当前时间设置到 Calendar 实例中
int currentHour = calendar.get(Calendar.HOUR_OF_DAY); // 获取当前小时(24小时制)
calendar.add(Calendar.HOUR, 2); // 在 Calendar 实例中增加2小时

结果解释

1. Date now = new Date();

  • now 变量将包含当前的日期和时间。例如,如果当前时间是 2023年10月1日 10:00:00,那么 now 的值将是一个表示这个时间的 Date 对象。

2. Calendar calendar = Calendar.getInstance();

  • 这行代码创建一个 Calendar 实例,默认情况下,它会被初始化为当前的日期和时间。

  • calendar.setTime(now);

  • 这行代码将 now 的值(当前时间)设置到 calendar 实例中。此时,calendar 的时间与 now 相同。

4. int currentHour = calendar.get(Calendar.HOUR_OF_DAY);

  • 这行代码获取当前小时(24小时制)。如果当前时间是 10:00:00,那么 currentHour 的值将是 10

5. calendar.add(Calendar.HOUR, 2);

  • 这行代码在 calendar 实例中增加2小时。假设 now 是 10:00:00,那么此时 calendar 的时间将变为 12:00:00。

6. calendar.getTime()

  • 这行代码将返回 calendar 当前的时间(即增加2小时后的时间)。如果 now 是 10:00:00,那么 calendar.getTime() 的结果将是 12:00:00。

总结

  • now:表示当前的日期和时间(例如 2023年10月1日 10:00:00)。

  • calendar.getTime():在增加2小时后,表示的时间将是当前时间加2小时(例如 2023年10月1日 12:00:00)。

因此,nowcalendar.getTime() 的结果在时间上是不同的,calendar.getTime() 是在 now 的基础上增加了2小时后的结果

2.直接使用 Date 进行加法(不推荐)

虽然可以通过 Date 的 getTime() 方法获取时间戳(毫秒),然后进行加法,但这种方式不够直观,且容易出错。

 // 获取当前时间
        Date now = new Date();
        System.out.println("当前时间: " + now);

        // 计算两小时之后的时间
        long twoHoursInMillis = 2 * 60 * 60 * 1000; // 2小时的毫秒数
        Date twoHoursLater = new Date(now.getTime() + twoHoursInMillis); // 创建新的 Date 对象

        System.out.println("两小时之后的时间: " + twoHoursLater);

3.总结

  • 使用 DateCalendar:这是最常见的做法,Calendar 提供了方便的时间加减功能。

  • 直接使用 Date:虽然可以通过时间戳进行加法,但这种方式不够直观,建议使用 Calendar 或 Java 8 的 LocalDateTime

如果您使用的是 Java 8 或更高版本,推荐使用 LocalDateTime,因为它提供了更好的可读性和可维护性