应统一迁移到 java.time 包,用 instant 记录真实时间点、zoneddatetime/offsetdatetime 展示本地时间、localdatetime 仅用于无时区逻辑;数据库优先选 timestamp with time zone;格式化用内置 datetimeformatter;跨月计算用 plusmonths() 而非 plusdays(30)。

别再用 Date 和 Calendar 了
Java 8 之前的时间 API(Date、Calendar、SimpleDateFormat)线程不安全、设计混乱、易出错。比如 SimpleDateFormat 在多线程下解析或格式化日期会返回错误结果,甚至抛 ArrayIndexOutOfBoundsException。这不是 bug,是设计缺陷——它本就不该被共享。
✅ 正确做法:统一迁移到 java.time 包下的新 API(JSR-310),如 LocalDateTime、ZonedDateTime、Instant、DateTimeFormatter。它们不可变、线程安全、语义清晰。
时区不是可有可无的配置项
很多开发者用 LocalDateTime 存储“带时区含义”的时间(比如用户下单时间、服务器日志时间),这是典型误区。LocalDateTime 没有时区信息,它只是“某个本地时刻的字符串快照”,无法表达真实时间点。一旦跨系统或做时间计算,极易出错。
✅ 正确做法:
- 记录事件发生的真实时间点 → 用 Instant(UTC 时间戳)
- 面向用户展示本地时间(如“北京时间 14:30”)→ 用 ZonedDateTime 或 OffsetDateTime
- 仅处理“年月日时分秒”逻辑(如生日、排班表)→ 才考虑 LocalDateTime,但要明确不参与时间差、时区转换等操作
数据库交互必须对齐时区语义
JDBC 驱动对时间类型的处理差异大。老版本驱动常把 TIMESTAMP 当作本地时间处理,导致存入和查出的时间偏移;JPA(如 Hibernate)若未正确配置,可能把 LocalDateTime 直接映射为无时区的数据库字段,丢失上下文。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
✅ 正确做法:
- 数据库字段优先选 TIMESTAMP WITH TIME ZONE(PostgreSQL)或 TIMESTAMP + 显式 UTC 存储(MySQL/Oracle)
- JDBC 层:连接参数加
serverTimezone=UTC,避免驱动自动转换 - JPA 实体中,对应真实时间的字段用 Instant(Hibernate 5.2+ 原生支持),或 OffsetDateTime;避免用 LocalDateTime 映射带时序意义的字段
格式化器别硬编码,更别复用
DateTimeFormatter 是线程安全的,但很多人仍习惯像旧 API 那样“new 一个然后 static 缓存”,其实没必要。它本身轻量,且 JDK 已预定义常用格式(如 DateTimeFormatter.ISO_LOCAL_DATE_TIME)。
✅ 正确做法:
- 优先使用内置标准格式器,避免手写 pattern(如不用
"yyyy-MM-dd HH:mm:ss",改用 DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"),注意 uuuu 而非 yyyy) - 自定义格式器建议声明为 static final,但不是为了“省对象”,而是保证行为一致
- 解析时务必指定区域(
withLocale(Locale.CHINA)),否则遇到月份/星期名可能失败(尤其英文环境跑中文业务)
跨天、跨月计算别用加减数字
直接对 LocalDateTime 做 plusDays(30) 看似简单,但“30 天后” ≠ “下个月”。在 1 月 31 日加 30 天是 3 月 2 日;而 plusMonths(1) 才是真正的“下个月同日”,并自动处理 2 月天数差异。
✅ 正确做法:
- 按日历单位操作(月、年、星期)→ 用 plusMonths()、plusYears()、plusWeeks()
- 按绝对时间长度操作(精确 72 小时)→ 用 plusHours(72) 或 plus(Duration.ofHours(72))
- 涉及月末、季度末等业务逻辑 → 用 TemporalAdjusters(如
lastDayOfMonth()、firstInMonth(DayOfWeek.MONDAY))
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










