Java中获取当前系统时间最常用的是new Date(),它默认表示当前时间点;推荐使用Java 8+的LocalDateTime.now()、ZonedDateTime.now()或Instant.now()等线程安全、不可变的新API。

Java中获取当前系统时间,最常用的方式是创建 Date 对象,它默认就表示当前时间点。
直接 new Date() 获取当前时间
Date 的无参构造方法会调用系统当前时间戳(毫秒数),自动初始化为当前时间:
-
Date now = new Date();—— 简单直接,一行搞定 - 该对象包含年、月、日、时、分、秒、毫秒等完整信息
- 注意:
Date类本身不负责格式化输出,打印时会按默认格式(如Mon Apr 01 10:23:45 CST 2025)显示
配合 SimpleDateFormat 格式化输出
如果需要按指定格式(比如 yyyy-MM-dd HH:mm:ss)显示,需借助 SimpleDateFormat:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String formatted = sdf.format(new Date());- ⚠️ 注意:
SimpleDateFormat不是线程安全的,多线程环境下应避免复用同一实例
推荐使用现代 API(Java 8+)
Date 类已基本被标记为过时(虽然仍可用),更推荐用 java.time 包下的新类:
立即学习“Java免费学习笔记(深入)”;
-
LocalDateTime.now()—— 获取本地日期时间(不含时区) -
ZonedDateTime.now()—— 获取带时区的当前时间 -
Instant.now()—— 获取 UTC 时间戳,适合记录事件发生时刻 - 这些类不可变、线程安全,且 API 更清晰、易用
兼容旧代码时的注意事项
若必须用 Date(比如对接老系统或遗留接口),注意以下几点:
-
Date的月份从 0 开始(0 表示 1 月),年份是完整四位数(不是两位) -
getYear()、getMonth()等方法已被弃用,应避免使用 - 如需与新 API 互转,可用
Date.from(Instant)或date.toInstant()


















