【小知识大用处】Java与Unix时间戳互转
发布日期:2021-04-30 21:09:53 浏览次数:82 分类:精选文章

本文共 1111 字,大约阅读时间需要 3 分钟。

Unix 时间戳是从1970年1月1日(UTC/GMT 午夜)开始计算的秒数,不考虑闰秒。例如,1578179845对应的时间是2020年1月5日07:17:25 UTC。

在Java中,获取时间戳的API返回的并不是Unix时间戳,而是从1970年1月1日开始计算的毫秒数。例如,1578179845000对应的时间是2020年1月5日07:17:25 UTC。

将毫秒级时间戳转换为秒级非常简单,只需将其除以1000即可。例如:

long timeStamp = System.currentTimeMillis();int timeStampUnix = (int) (timeStamp / 1000); // 1578179845

然而,Unix时间戳作为天文数字对用户来说可能不够直观。为了方便用户理解,我们需要对其进行格式化处理。Java中可以使用SimpleDateFormat类来实现。

格式化时间戳的示例代码如下:

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

如果需要将格式化后的字符串再次转换为时间戳,可以使用以下方法:

String str = "2020-01-05 07:17:25";SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");long parsedDate = simpleDateFormat.parse(str).getTime();int timeStampUnix = (int) (parsedDate / 1000); // 1578179845

在实际项目中,为了提高代码的可维护性和扩展性,建议使用第三方类库如DateFormatUtils进行格式化和转换操作。例如:

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

这样不仅代码简洁,而且可以避免手动处理日期和时间相关的复杂问题。

如果需要进一步了解Java与Unix时间戳的互转操作,可以参考相关文档或类库的API文档。希望这篇文章能对您有所帮助!

上一篇:Linux——vi命令详解
下一篇:Android Xml文件生成,Xml数据格式写入

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2026年06月07日 23时57分32秒