Java-将Unix历元时间转换为日期
我需要将一些历元时间戳转换为实际日期,并使用了在堆栈溢出中找到的一些方法,但它们给出了错误的答案 例如,一个日期是大纪元时间中的“129732384262470907”,即使用 但是,我的代码生成:“Wed Dec 24 14:54:05 CST 19179225” 初始时间戳是以毫秒为单位的,在我这里看到的示例中,我应该乘以1000 如果我不乘以1000,我会得到:“Mon Aug 08 01:14:30 CDT 4113025” 两者都是错误的Java-将Unix历元时间转换为日期,java,Java,我需要将一些历元时间戳转换为实际日期,并使用了在堆栈溢出中找到的一些方法,但它们给出了错误的答案 例如,一个日期是大纪元时间中的“129732384262470907”,即使用 但是,我的代码生成:“Wed Dec 24 14:54:05 CST 19179225” 初始时间戳是以毫秒为单位的,在我这里看到的示例中,我应该乘以1000 如果我不乘以1000,我会得到:“Mon Aug 08 01:14:30 CDT 4113025” 两者都是错误的 那么我的错误在哪里呢?129732384262
那么我的错误在哪里呢?129732384262470907实际上是以微秒为单位的,如果它是6081,那么你需要除以1000,如果这是真正的输入 请注意,
epochconverter.com
甚至不处理该值-它只允许您输入129732384262470
,然后将其视为自历元起的毫秒
如果数据是从纪元开始的秒数,则需要乘以1000。基本上,您需要知道的是,Java从纪元开始就需要毫秒;其余的应该是一帆风顺的,假设您知道输入数据的实际含义
如果你能提供真实的数据,以及它所代表的含义,那么很可能很容易解决你的问题。如果你仔细看,epochconverter.com会截断这个数字,因为它对于输入字段来说太长了 我建议您打印
System.currentMillis()
的当前值,以查看基于“当前”历元的时间戳的大致范围,并重新缩放输入数字以匹配。我想你可能得除以1000
事实上,仔细看,如果你除以10000,你会得到1297323842624,这是2011年的一个日期。所以根本不清楚你给出的数字是什么单位。你真是太棒了!!这一变化使它正常工作。再次感谢,您是对的epochconverter.com给出的值不正确实时是“Sun Jan 19 23:24:22 CST 6081”真的吗?你期待着6081年?当然,我是个时间旅行者。我只需要回到6081,可用的原始系统非常令人沮丧。[/笑话]抱歉,粘贴了错误的,正确的是:“Thu Feb 10 01:44:02 CST 2011”我必须除以100000谢谢你给我关于EpochConverter.com的提示,我自己永远也想不到。正如你从我下面的帖子中看到的,在你的两个答案之间,我能够找到答案。
String epochString = token.substring(0, comma);
long epoch = Long.parseLong(epochString);
Date logdate = new Date(epoch * 1000);
BufferedWriter timewrite = new BufferedWriter(new FileWriter(tempfile, true));
timewrite.write(logdate);
timewrite.flush();
timewrite.close();