嗨我有 MSC 生成的十六进制时间戳字符串(相邻基站保留移动用户位置的记录)。现在我想将十六进制字符串转换为人类可读的日期和时间。
我尝试如下但我无法转换:
String s = "1508221325112B0530";
long longVaue = new BigInteger(s, 16).longValue();
Calendar c=Calendar.getInstance();
c.setTimeInMillis(longVaue);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(dateFormat.format(c.getTime()));
输出:18573217-01-15 09:15:35
这不是印刷年份,任何帮助将不胜感激。
答案 0 :(得分:2)
看起来你的日期是以皮秒为单位。试试这个:
long longVaue = new BigInteger(s, 16).divide(BigInteger.valueOf(1000000000)).longValue();
应打印出1982-04-18 12:47:57
。
另一种(更有可能?)的可能性是它实际上是十进制数字,其他一些值由“B”分隔:
long longVaue = Long.parseLong(s.split("B")[0]);
打印2017-10-16 11:22:05
。
注意:我的时区是PST。您的结果可能略有不同。