Java获取当前时间的时间戳(13位和10位)
背景:项目中正好用到时间戳,但是自己手写还记不住,索性就记录下来吧,要不然总是百度,😄
13位的时间戳的三种方式
long time1 = System.currentTimeMillis(); // long time2 = Calendar.getInstance().getTimeInMillis(); // long time3 = new Date().getTime();
运行完上述代码,显示如下;
time1: 1684398076253
time2: 1684398076253
time3: 1684398076253
10位的时间戳的三种方式
long time1 = System.currentTimeMillis() / 1000; // long time2 = Calendar.getInstance().getTimeInMillis() / 1000; // long time3 = new Date().getTime() / 1000;
运行完上述代码,显示如下;
time1: 1684398346
time2: 1684398346
time3: 1684398346
java时间戳 10位和13位分别是怎么来的?
最近遇到一个比较头疼的问题。
语言是java,将当前时间(new Date())set进bean中,然后使用fastjson将bean转换成json,存放在redis中。
但问题就来了,首先时间yyyy-mm-dd hh:mm:ss格式转换成json会自动转成时间戳,13位的,
而ios端只能解析10位的时间戳。
问题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("yyyy-MM-dd HH:mm:ss"); long timeLong = Long.valueOf(time); dateTime = simpleDateFormat.format(new Date(timeLong * 1000L)); return dateTime; }
到此这篇关于Java获取当前时间的时间戳(13位和10位)的文章就介绍到这了,更多相关Java获取当前时间时间戳内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot中Bean生命周期自定义初始化和销毁方法详解
这篇文章给大家详细介绍了SpringBoot中Bean生命周期自定义初始化和销毁方法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下2024-01-01
最新评论