嗨,我有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
它没有打印年份,任何帮助将不胜感激。
最佳答案
看起来您的日期以皮秒为单位。试试这个:
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。您的结果可能会略有不同。
关于java - 将十六进制值转换为时间戳/日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765637/