You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java将epoch时间戳0转为Date未输出1970/01/01 00:00问题求助

问题排查与修复方案

你遇到的输出异常由两个原因共同导致:

1. 格式化时未指定时区

SimpleDateFormat默认会使用JVM的默认时区(和操作系统时区保持一致),而时间戳0对应的是UTC时区的1970-01-01 00:00:00,如果你处于东12区,输出时间就会对应偏移12小时,最终显示为12:00。你换用Calendar操作仍然输出异常,是因为输出环节依然使用了默认时区的SimpleDateFormat进行格式化,和Date/Calendar的取值逻辑无关。

2. 时间格式化符使用错误

你使用的hh是12小时制的格式化标识,就算时间实际为00:00,用hh格式化也会显示为12:00,24小时制需要使用HH作为格式化符。


修复后的代码示例

Calendar origin = Calendar.getInstance();
origin.clear();
origin.setTimeInMillis(0);
Date date_origin = new Date(origin.getTimeInMillis());
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
// 显式指定格式化使用UTC时区
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println("Date origin "+sdf.format(date_origin));

运行后即可输出你预期的 Date origin 01/01/1970 00:00。

内容的提问来源于stack exchange,提问作者tiamat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:00:03