所以我对 Java 中的日历/时间/日期内容有点陌生,但我在网上读过很多关于它们的内容。
这是我必须做的:
我有一个将 Avl 数据包发送到我的通信服务器的外部设备,并且我正在进行数据部分的解析过程。
在数据包的某处,设备发送一个 32 位的时间戳,我必须将其解析/翻译成保存 GPS 点记录的时间。
时间戳给了我从 2007.01.01 00:00 UTC 开始的秒数
现在这是一个示例代码,我觉得它是我在其余实验中尝试过的最接近的示例代码。
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
long now = (long)(TimeStampSeconds.longValue() * 1000);
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(2007, 0, 1);
calendar.setTimeInMillis(now);
System.out.println(now + " = " + formatter.format(calendar.getTime()));
之后我发现 calendar.set 没有创造一个新的纪元,所以 .setTimeInMills 不起作用。虽然我得到了一些疯狂的结果,比如:
二进制时间戳为:0000101011000001010110001111011100001111
秒:46193506063
46193506063000 = 25/10/3433 04:27:43.000
我不应该只是想念 1970 年到 2007 年之间的 37 年吗?
我想找到一种方法来从我从设备获得的秒数中找到时间,但是它们的纪元是 2007 年 1 月 1 日,而 java 的纪元是 1970 年 1 月 1 日。
编辑:我想要的是有时间:2007 年 1 月 1 日加上时间戳的时间。希望我稍微澄清了这个问题..
有人有什么想法吗??提前谢谢