gpt4 book ai didi

Java 将日期转换为纪元值会产生错误输出

转载 作者:可可西里 更新时间:2023-11-01 11:46:07 24 4
gpt4 key购买 nike

我正在尝试将以下日期时间字符串对象转换为 unix 纪元时间戳值。但是,当我运行该程序时,我注意到它生成了一个纪元值 1404461110000,当我检查我的 ubuntu unix 机器时是 8 月 7 日星期三 18:06:40 但是实际上我正在通过 2014-07-04 04 七月 4 日: 05:10。我的 ubuntu 机器上有一个美国/多伦多时区,但我认为这里不重要?

Java代码:

            long epoch = 0;
String str = "2014-07-04 04:05:10"; // UTC

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date datenew = df.parse(str);
epoch = datenew.getTime();

System.out.println(epoch); // prints 1404461110000

Ubuntu Linux 14.04

date -d@1404461110000

显示=美国东部时间 8 月 7 日星期三 18:06:40 46475

最佳答案

问题是您没有处理 unix timestamp在 Java 中调用 getTime() 时。 Unix 时间戳以自纪元以​​来的表示,而您从 Java 获得的值是自 epoch 以来的毫秒 (1970 年 1 月 1 日),因此有所不同。

它必须是:

epoch = datenew.getTime() / 1000;

这应该让你至少接近一万年。如果在那之后您仍然看到差异,则它与时区相关,并且可以通过在 DateFormat 实例上指定时区来适应。

关于Java 将日期转换为纪元值会产生错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25277127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com