首页 > 解决方案 > Java有幼稚的时间戳吗?

问题描述

正如我们在前面的问题中发现的,java 中的长时间戳意味着 Unix 时间戳:

long ts = 1362156863140L

但是Java中是否有幼稚的时间戳?或者认为构造函数中的长时间戳不知道时区的类?

标签: javajava-8timezonetimestamp

解决方案


您使用的术语很有趣。根据大多数定义,“时间戳”是唯一的时间点,因此必须与 UTC 相关——要么完全基于 UTC,要么与 UTC 有固定的偏移量。因此,“朴素时间戳”有点矛盾。

但是,确实有一个表示没有时区的日期和时间,即LocalDateTime. 它是java.time作为 JSR-310 与 Java 8 一起引入的 API 的一部分。

您可以使用LocalDateTime.ofEpochSecond从数字时间戳创建一个。如果您的时间戳是基于毫秒的,那么您可以进行一些除法和模运算以将其拆分为单独的秒和纳秒参数。您还需要将 UTC 偏移量传递给它,因此它知道您希望如何解释传入的值。


推荐阅读