上一篇
使用Java获取时间整点,可通过以下方法:,1. Java 8及以上:用
LocalDateTime.now().truncatedTo(ChronoUnit.HOURS)截断至小时。,2. 传统方式:
Calendar设置分钟、秒和毫秒为0。,3. 结果获得如
2025-10-01T12:00格式的整点时间。
方法1:Java 8+ 的 LocalDateTime(推荐)
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
// 获取当前时间并截断到小时
LocalDateTime now = LocalDateTime.now();
LocalDateTime hourStart = now.truncatedTo(ChronoUnit.HOURS);
System.out.println("当前时间: " + now);
System.out.println("整点时间: " + hourStart);
}
}
输出示例:当前时间: 2025-10-05T14:35:42.123整点时间: 2025-10-05T14:00
优点:

- 线程安全,无需处理时区问题(默认使用系统时区)。
- 代码简洁直观,直接使用
truncatedTo()方法截断时间单位。
方法2:Java 8+ 的 ZonedDateTime(需明确时区)
import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
// 指定时区(如上海)
ZonedDateTime now = ZonedDateTime.now(java.time.ZoneId.of("Asia/Shanghai"));
ZonedDateTime hourStart = now.truncatedTo(ChronoUnit.HOURS);
System.out.println("整点时间(上海时区): " + hourStart);
}
}
方法3:旧版 Calendar(Java 7及以下)
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// 分钟、秒、毫秒归零
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date hourStart = calendar.getTime();
System.out.println("整点时间: " + hourStart);
}
}
方法4:SimpleDateFormat格式化(不推荐)
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:00:00");
String hourStartStr = sdf.format(new Date());
System.out.println("整点时间字符串: " + hourStartStr);
}
}
注意:

- 此方法生成的是字符串而非时间对象,后续操作需再次解析。
SimpleDateFormat非线程安全,多线程需同步处理。
方法对比与选型建议
| 方法 | 适用版本 | 线程安全 | 时区处理 | 推荐度 |
|---|---|---|---|---|
LocalDateTime |
Java 8+ | 系统默认 | ||
ZonedDateTime |
Java 8+ | 可指定时区 | ||
Calendar |
Java 1.1+ | 系统默认 | ||
SimpleDateFormat |
Java 1.1+ | 依赖格式化设置 |
- Java 8及以上:优先使用
LocalDateTime.truncatedTo(ChronoUnit.HOURS),简洁高效。 - 需指定时区:用
ZonedDateTime替代LocalDateTime。 - 旧版Java:用
Calendar手动归零分钟/秒/毫秒。 - 避免使用
SimpleDateFormat:除非仅需字符串输出。
关键点:
- 整点 = 当前小时 +
00分00秒000毫秒。- 时间操作需注意时区,默认使用系统时区,跨时区应用需显式指定。
引用说明:
本文代码基于Oracle官方Java文档的日期时间API指南,遵循Java SE标准库规范。java.time包的设计参考了JSR 310标准,是日期处理的行业最佳实践。

