【小知识大用处】Java与Unix时间戳互转

简介: 【小知识大用处】Java与Unix时间戳互转

随着读者的数量越来越多,总不免被问到一些“面向搜索引擎”的问题,比如说:“Java 怎么与 Unix 时间戳互转啊?”期初我很受不了,问得多了我就习惯了,于是就打算把这些小知识点统一写成文章,到时候直接扔给读者。


Unix 时间戳是指从1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒。比如说 1578179845。


Java 中获取时间戳的大多数 API 返回的并不是 Unix 时间戳,而是从1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的毫秒数。比如说 1578179845000。


System.currentTimeMillis();

Calendar.getInstance().getTimeInMillis();

new Date().getTime();



将毫秒级转成秒级很简单,除以 1000 就搞定。


long timeStamp = System.currentTimeMillis();

int timeStampUnix = (int) (timeStamp / 1000);



但是时间戳这样的数据对用户来说就好像是天文数字,因此需要一些加工处理,使其变成用户习惯的格式,Java 是怎么格式化这些时间戳呢?


int timeStampUnix = 1578179845;

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String result = simpleDateFormat.format(new Date(timeStampUnix * 1000L));

// 2020-01-05 07:17:25



使用 SimpleDateFormat 类,指定对应的格式,然后再将时间戳转成 Date,最后进行 format 格式化。


那怎么再转成时间戳呢?


String str = "2020-01-05 07:17:25";

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

int timeStampUnix = (int) (simpleDateFormat.parse(str).getTime() / 1000);

// 1578179845


不过,在实战项目中,我们通常借用第三方类库来实现转换,比如说格式化间戳可以使用 org.apache.commons.lang3.time.DateFormatUtils。


DateFormatUtils.format(1578179845 * 1000L,"yyyy-MM-dd HH:mm:ss")

1

再转成时间戳可以使用 org.apache.commons.lang3.time.DateUtils。


DateFormatUtils.format(1578179845 * 1000L,"yyyy-MM-dd HH:mm:ss")


相关文章
|
6月前
|
Java
【Java用法】Java中String类型和int类型互转的所有方法
【Java用法】Java中String类型和int类型互转的所有方法
78 0
|
4月前
|
JSON fastjson Java
(fastjson)java 如何将String(字符串)与JSON互转
(fastjson)java 如何将String(字符串)与JSON互转
75 1
|
4月前
|
Java 数据库
Java【问题记录 04】时间戳类型字符串{Timestamp@15601}2021-07-14 18:56:53.0变成带T的Object类型2021-07-14T10:56:53.000+0000
Java【问题记录 04】时间戳类型字符串{Timestamp@15601}2021-07-14 18:56:53.0变成带T的Object类型2021-07-14T10:56:53.000+0000
22 0
|
5月前
|
Java
Java获取时间戳Timestamp
Java获取时间戳Timestamp
|
8月前
|
Java
Java 中获取时间戳,和两个Date类的使用
Java 中获取时间戳,和两个Date类的使用
76 0
|
10月前
|
存储 Java
[java 基础知识] byte int 互转
[java 基础知识] byte int 互转
99 0
|
10月前
|
Java
Java中时间戳的使用
Java中时间戳的使用
63 1
|
11月前
|
Java
Java获取当天、当前月、当前年(今年)的开始和结束时间戳
Java获取当天、当前月、当前年(今年)的开始和结束时间戳
278 0
|
11月前
|
Java
Java中在时间戳计算的过程中遇到的数据溢出问题
Java中在时间戳计算的过程中遇到的数据溢出问题
77 0