date.settime() 方法通过传入毫秒时间戳完全替换 date 对象的时间值,无返回值,直接修改原对象;适用于精确设时或还原服务器时间戳,但需注意其可变性、时区显示差异,复杂日期运算建议配合 calendar 使用。

Date.setTime() 方法用于直接设置 Date 对象的毫秒值(自 1970-01-01 00:00:00 UTC 起的毫秒数),从而修改其表示的时间。
setTime() 的作用和基本用法
它不是“加减时间”,而是**完全替换**当前 Date 对象内部的时间戳。调用后,Date 实例将精确对应你传入的毫秒值。
- 参数类型是
long,代表毫秒时间戳 - 该方法无返回值(void),直接修改原对象
- 适用于需要精确控制时间点的场景,比如还原服务器传来的毫秒数
常见使用方式示例
假设你想把一个 Date 对象设为 2025 年 4 月 5 日 10:30:00:
Date date = new Date(); // 当前时间 long targetMillis = 1743845400000L; // 可通过工具或 Calendar 计算得出 date.setTime(targetMillis); // 直接覆盖时间戳
也可以基于现有时间做偏移再设置:
Date now = new Date(); long oneHourLater = now.getTime() + 60 * 60 * 1000; // 加一小时 now.setTime(oneHourLater); // 修改为一小时后
注意事项
Date 是可变对象,setTime() 会改变原始实例,不是创建新对象。如果不想影响原对象,应先复制:
- 推荐用
new Date(originalDate.getTime())创建副本再操作 - 注意时区:毫秒值是 UTC 时间,但
Date.toString()默认按本地时区显示,容易误解 - Java 8+ 更推荐使用
Instant、ZonedDateTime等不可变新 API,避免 Date 的线程安全和设计缺陷
与 Calendar 配合使用更灵活
若需按年月日时分秒逻辑调整(如“加3天”),单独用 setTime 不直观,建议配合 Calendar:
Calendar cal = Calendar.getInstance(); cal.setTime(date); // 先载入 cal.add(Calendar.DAY_OF_MONTH, 3); // 增加3天 date.setTime(cal.getTimeInMillis()); // 再写回 Date
这样既保留了 Date 兼容性,又利用 Calendar 处理复杂日期运算。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











