【小知识大用处】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")


相关文章
|
8月前
|
Unix
Unix时间戳1970Java与Unix时间戳互转
Unix时间戳1970Java与Unix时间戳互转
56 0
|
4月前
|
Java API
Java时间戳教程
本文详细介绍Java中时间戳的处理方法,包括获取当前时间戳、使用`java.time`包、时间戳与日期的相互转换及格式化等。示例代码展示了如何利用`System.currentTimeMillis()`和`java.time.Instant`获取时间戳,以及如何通过`Date`和`ZonedDateTime`进行日期转换和时区处理。随着Java 8引入的`java.time`包,日期时间操作变得更加强大和便捷,推荐在新项目中优先采用。
266 8
|
6月前
|
SQL Java Unix
Android经典面试题之Java中获取时间戳的方式有哪些?有什么区别?
在Java中获取时间戳有多种方式,包括`System.currentTimeMillis()`(毫秒级,适用于日志和计时)、`System.nanoTime()`(纳秒级,高精度计时)、`Instant.now().toEpochMilli()`(毫秒级,ISO-8601标准)和`Instant.now().getEpochSecond()`(秒级)。`Timestamp.valueOf(LocalDateTime.now()).getTime()`适用于数据库操作。选择方法取决于精度、用途和时间起点的需求。
81 3
|
6月前
|
Java 数据库
使用java.sql.Timestamp处理时间戳
使用java.sql.Timestamp处理时间戳
|
7月前
|
Java 存储 数据库
如何用JAVA基于时间戳回放历史数据?
如何用JAVA基于时间戳回放历史数据?
128 4
|
7月前
|
安全 Java 测试技术
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间
【6月更文挑战第5天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
105 0
|
6月前
|
Unix
鸿蒙将unix时间戳转换为string类型
鸿蒙将unix时间戳转换为string类型
110 0
|
7月前
|
Java API
Java代码如何将时间戳转换为时间
【6月更文挑战第27天】Java代码如何将时间戳转换为时间
107 0
|
7月前
|
Java
java实现字符串与十六进制字符串互转
java实现字符串与十六进制字符串互转
|
7月前
|
Java
java工具bases64与文件互转
java工具bases64与文件互转