好的,懂了!
我给你总结一版适合中国(北京时间,东八区)使用的
Date vs LocalDateTime 常用操作对照表。


☀️ Java中 Date vs LocalDateTime(中国时区版对照表)

功能Date 写法(简单版)LocalDateTime 写法(标准版,东八区)说明
获取当前时间new Date()LocalDateTime.now()
获取时间戳(毫秒)new Date().getTime()LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli()LocalDateTime 需要指定时区
时间加减天数DateUtils.addDays(date, 2) (Apache工具包)localDateTime.plusDays(2) / minusDays(2)LocalDateTime内置链式操作
时间加减小时DateUtils.addHours(date, 3)localDateTime.plusHours(3) / minusHours(3)
时间加减分钟DateUtils.addMinutes(date, 10)localDateTime.plusMinutes(10) / minusMinutes(10)
时间格式化成字符串new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(localDateTime)LocalDateTime 推荐线程安全写法
字符串转时间new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str)LocalDateTime.parse(str, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
时间戳转时间new Date(timestamp)LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.of("Asia/Shanghai"))LocalDateTime需要指定上海时区
获取某个时间字段(年、月、日等)Calendar.get(Calendar.YEAR)localDateTime.getYear(), .getMonthValue(), .getDayOfMonth()LocalDateTime更优雅

🏆 补充:中国常用时区

如果是中国大陆(北京时间),统一使用:

ZoneId.of("Asia/Shanghai") 
// 或者
ZoneOffset.of("+8") 

两个都可以,效果一样。

  • ZoneId 更精确,适合各种地区。
  • ZoneOffset 简单暴力,适合只需要时差的情况。

🔥 最常用的几行代码(背下来就行)

// LocalDateTime -> 毫秒时间戳(北京时间)
long ts = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();

// 毫秒时间戳 -> LocalDateTime(北京时间)
LocalDateTime time = LocalDateTime.ofInstant(Instant.ofEpochMilli(ts), ZoneId.of("Asia/Shanghai"));

// 格式化
String str = time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

要不要我顺便也给你出一版 "直接封装好的工具类(TimeUtils)",一键搞定 LocalDateTime时间戳字符串 互转?
要的话告诉我,我可以直接打包一份给你用!🚀

最后修改:2025 年 04 月 29 日
如果觉得我的文章对你有用,请随意赞赏