date.gettime() 返回自1970年1月1日utc起的毫秒数,为long类型;调用需确保date对象非null,结果与时区无关,推荐用system.currenttimemillis()或instant.now().toepochmilli()替代。

Date.getTime() 方法返回自 1970 年 1 月 1 日 00:00:00 UTC(即 Unix 纪元)以来的毫秒数,结果是 long 类型,单位为毫秒。
如何正确调用 getTime()
只要 Date 对象不为 null,直接调用即可:
- 新建 Date 实例时,默认表示当前时间
- 也可以传入毫秒值构造特定时间点的 Date 对象
示例:
Date now = new Date(); // 当前时间 long timestamp = now.getTime(); // 获取毫秒时间戳 Date specific = new Date(1717027200000L); // 构造指定时间 long ts = specific.getTime(); // 同样返回 long 毫秒值
注意时区无关性
getTime() 返回的是 UTC 时间偏移量的毫秒数,与时区无关。它本质是时间线上的一个绝对位置,打印或格式化时显示的“本地时间”取决于你用什么方式展示,但 getTime() 本身不包含时区信息。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 同一个毫秒值,在不同时区用 SimpleDateFormat 格式化会显示不同本地时间
- 但 getTime() 结果完全一致
与现代 API 的对比建议
虽然 Date.getTime() 仍可用,但 Java 8+ 推荐使用 Instant 和 System.currentTimeMillis():
-
System.currentTimeMillis()最简洁,直接获取当前毫秒时间戳 -
Instant.now().toEpochMilli()语义更清晰,且与 java.time 体系兼容 - Date 已被设计为遗留类,部分方法(如 getYear)已弃用
例如:
long ts1 = System.currentTimeMillis(); // 推荐:轻量、高效 long ts2 = Instant.now().toEpochMilli(); // 推荐:语义明确、可读性强
常见误区提醒
避免把 getTime() 和“格式化成字符串”混淆:
-
getTime()不返回形如 "2024-05-30" 的字符串,只返回数字 - 不要误以为它受 Locale 或 TimeZone 影响 —— 它返回的是纯数值
- 如果需要秒级时间戳(去掉毫秒),可除以 1000 并转为 int 或 long
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










