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

标签 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

它没有打印年份,任何帮助将不胜感激。

最佳答案

看起来您的日期以皮秒为单位。试试这个:

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/

相关文章:

oracle - 是否可以使用 sqoop 导入表并添加额外的时间戳列?

javascript - 如何更改 TOISOString 的日期格式?

java - 将重启手机的 Android 应用程序小部件 - 小部件没有做任何事情?

java - 使用 servlet 的套接字服务器

sql - SSIS 2008 脚本组件 DT_TIMESTAMP 到日期时间

mysql - 由于函数 str_to_date 的日期时间值 "..."不正确,无法创建 mysql 表

c# - DateTime.Now - 一天的第一分钟和最后一分钟

php - mdate() 函数 codeigniter - 错误

java - postgresql - 在 java 项目中定义串行数据类型

java - android中的同步方法