java 纪元时间转换器

标签 java epoch influxdb

我有以下日期:2016-08-08T00:45:02.370294075Z

我尝试使用 .getMillis() 将其转换为纪元,但会导致精度损失:1470617102370。我的目标是将其转换为 influxdb 有线格式。

还有其他办法吗?

最佳答案

tl;博士

2016-08-08T00:45:02.370294075Z 具有纳秒。

2016-08-08T00:45:02.370Z 有毫秒。

即时

Instant类代表 UTC 时间轴上的一个时刻,分辨率为 nanoseconds 。因此小数部分最多可达九位。

Instant instant = Instant.parse( "2016-08-08T00:45:02.370294075Z" ) ;

毫秒

Milliseconds是比纳秒更粗的粒度,提供最多三位小数。所以extracting a count of milliseconds from epoch (1970-01-01T00:00:00Z) 当然意味着数据丢失,即六到九位的任何十进制数字被截断。

long millisecondsSinceEpoch = instant.toEpochMilli() ;  // 2016-08-08T00:45:02.370Z

纳秒

influxdb 似乎将时间戳写入从 1970 UTC 开始的纳秒数,尽管文档没有明确说明。

Instant 类不会呈现以纳秒为单位的纪元计数,但您可以计算一个。一个Instant由纪元以来的若干个while秒加上若干秒的纳秒组成。因此,将第一个乘以十亿,然后加上第二个。

请注意 10 亿后面附加的 L,以将计算转换为 long 而不是 int

long nanosecondsSinceEpoch = ( instant.getEpochSecond() * 1_000_000_000L ) + instant.getNano() ;

关于java 纪元时间转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38921391/

相关文章:

java - EncryptionException : javax. crypto.IllegalBlockSizeException:使用填充密码解密时,输入长度必须是 8 的倍数

java - java中的闰年

java - 从文本文件中读取 char 和 line

python - 获取代表当前日期的纪元时间戳范围

influxdb - Grafana 无法连接到 InfluxDB

python - 将 python Web 应用程序指标发送到 InfluxDB

java - 使用 JRuby 或 Python 调用一些第三方 Java 库 - 架构问题

mysql - 纪元时间和MySQL查询

以天为单位的 Javascript 纪元时间

python - 为什么 influx 性能这么慢