关于时间戳的位数的粗浅理解,批量时间戳数据转换成时间后结果都一样的解决办法

现在手头在做的模块有一个功能涉及了时间戳,我需要将时间戳转换成时间,这个时间和一系列的值之后会用来画图,时间是横轴,因此时间是不可以重复的.

我接收的时间戳都是不同的,但是我转换的时间却是相同的,因此我才注意到了时间戳是区分位数的.

我是这样转换成日期的:

//时间戳是我接收的数据,是String类型,这里直接写一个作为例子
String timeStamp="1534730732790";
//想要日期生成的格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//这里要转换成long类型,不然下面一句会显示方法过时,画删除线,并且运行报错,截图在下面
long stampTime = Long.parseLong(timeStamp);
//时间戳转换成对应格式的日期
String sd = sdf.format(new Date(stampTime));

时间戳不转换成long的报错:

正确结果:  

言归正传,我代码写的转换格式是精确到秒的,恰好我接收的这批时间戳的前十位都是一样的,只有后三位在变化,也就是说我接收的数据秒数都是一样的,是一秒之内的时间,因此如果只截取精确到秒的时间,就出现了转换成的时间都一样的情况,因此就不能生成我需要的图.13位的时间戳的前十位是精确到秒的,后三位是毫秒(秒和毫秒差1000倍),所以我在截取时间的时候需要将后三位的毫秒也加上,才能标识出这批时间戳之间的不同.一般是这样加的:

String time="1534730732790";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long stampTime = Long.parseLong(time);
//获取毫秒位(时间戳的最后三位)
String mm=time.substring(time.length()-3);
String sd = sdf.format(new Date(stampTime))+" "+mm;

结果:  

总结:13位的时间戳后三位是毫秒,如果时间变化的非常小的时候就需要精确到毫秒,同理16位的是精确到微秒的,后三位是微秒

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值