将十六进制值转换为时间戳/日期和时间

时间:2016-03-03 07:22:01

标签: java datetime timestamp hex

嗨我有 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

这不是印刷年份,任何帮助将不胜感激。

1 个答案:

答案 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。您的结果可能略有不同。