java 纪元时间转换器
java epoch time convertor
我有以下日期:2016-08-08T00:45:02.370294075Z
我正在尝试使用 .getMillis()
将其转换为纪元,但它会导致精度损失:1470617102370
。我的目标是将其转换为 influxdb 有线格式。
还有其他方法吗?
tl;博士
2016-08-08T00:45:02.370294075Z
有纳秒。
2016-08-08T00:45:02.370Z
有毫秒。
Instant
Instant
class represents a moment on the timeline in UTC with a resolution of nanoseconds。所以小数点最多九位。
Instant instant = Instant.parse( "2016-08-08T00:45:02.370294075Z" ) ;
毫秒
Milliseconds is a coarser granularity than nanoseconds, providing up to three digits of decimal fraction. So extracting a count of milliseconds 从纪元 (1970-01-01T00:00:00Z) 当然意味着数据丢失,从第六到九位截断任何小数位。
long millisecondsSinceEpoch = instant.toEpochMilli() ; // 2016-08-08T00:45:02.370Z
纳秒
influxdb 似乎将时间戳写为从 1970 UTC 开始的纳秒数,尽管文档没有明确说明。
Instant
class 不会呈现以纳秒为单位的纪元计数,但您可以计算一个。 Instant
由纪元以来的几秒加上几分之几的纳秒组成。所以将第一个乘以十亿然后加上第二个。
注意附加到十亿的 L
将计算转换为 long
而不是 int
.
long nanosecondsSinceEpoch = ( instant.getEpochSecond() * 1_000_000_000L ) + instant.getNano() ;
我有以下日期:2016-08-08T00:45:02.370294075Z
我正在尝试使用 .getMillis()
将其转换为纪元,但它会导致精度损失:1470617102370
。我的目标是将其转换为 influxdb 有线格式。
还有其他方法吗?
tl;博士
2016-08-08T00:45:02.370294075Z
有纳秒。
2016-08-08T00:45:02.370Z
有毫秒。
Instant
Instant
class represents a moment on the timeline in UTC with a resolution of nanoseconds。所以小数点最多九位。
Instant instant = Instant.parse( "2016-08-08T00:45:02.370294075Z" ) ;
毫秒
Milliseconds is a coarser granularity than nanoseconds, providing up to three digits of decimal fraction. So extracting a count of milliseconds 从纪元 (1970-01-01T00:00:00Z) 当然意味着数据丢失,从第六到九位截断任何小数位。
long millisecondsSinceEpoch = instant.toEpochMilli() ; // 2016-08-08T00:45:02.370Z
纳秒
influxdb 似乎将时间戳写为从 1970 UTC 开始的纳秒数,尽管文档没有明确说明。
Instant
class 不会呈现以纳秒为单位的纪元计数,但您可以计算一个。 Instant
由纪元以来的几秒加上几分之几的纳秒组成。所以将第一个乘以十亿然后加上第二个。
注意附加到十亿的 L
将计算转换为 long
而不是 int
.
long nanosecondsSinceEpoch = ( instant.getEpochSecond() * 1_000_000_000L ) + instant.getNano() ;