java时间戳 10位和13位分别是怎么来的?

java 专栏收录该内容
34 篇文章 0 订阅

最近遇到一个比较头疼的问题,语言是java,将当前时间(new Date())set进bean中,然后使用fastjson将bean转换成json,存放在redis中,但问题就来了,首先时间yyyy-mm-dd hh:mm:ss格式转换成json会自动转成时间戳,13位的,而ios端只能解析10wei的时间戳。
问题1:为什么会生成13位的时间戳,13位的时间戳和10时间戳分别是怎么来的
经过百度得知,原来java的date默认精度是毫秒,也就是说生成的时间戳就是13位的,而像c++或者php生成的时间戳默认就是10位的,因为其精度是秒。
问题2:13位时间戳如何转换成10位时间戳
本来以为java中有设置可以修改其时间精度,后来在百度上没有找到,就只能采用其它方法来转化,这里提供两种方式来转换。
第一种:通过substring方法,将13位的时间戳最后三位数字截取
第二种:将13位时间戳除以1000取整。
ps:个人觉得这两种方法好low,目前没有更好的方法

另外提供一段时间戳转时间的代码:

/**
 * 时间戳转时间(10位时间戳)
 * @param time
 * @return
 */
public static String timestampToDate(long time) {
    String dateTime;
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FORMAT_SEC_FULL);
    long timeLong = Long.valueOf(time);
    dateTime = simpleDateFormat.format(new Date(timeLong * 1000L));
    return dateTime;
}
  • 11
    点赞
  • 8
    评论
  • 22
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值