【问题标题】:Java - get unix epoch with microsecondJava - 用微秒获取 unix 纪元
【发布时间】:2020-07-21 20:02:25
【问题描述】:

我正在努力以这种格式 (1586420933.453254) 获得带有微秒的 unix 时间纪元。我尝试了不同的课程。

- java.utils.Calendar
- java.time.Instant
- org.joda.time.DateTime

但我只得到这样的毫秒数 - 1586420933453

如何在 Java 中获得像 1586420933.453254 这样的微秒级的 unix 纪元。

【问题讨论】:

  • 查看Instant的文档和System上的相关方法。如果Instant 没有提供该分辨率,则系统时钟可能没有它。指定您的运行时平台。

标签: java datetime jodatime java-time date


【解决方案1】:

您可以使用标准 java 时间 Instant + 数字格式轻松完成。但请记住,结果将以 UTC 表示。这是当前时间的草稿:

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.time.Instant;


Instant datetime = Instant.now();

// Extract needed information: date time as seconds + fraction of that second
long secondsFromEpoch = datetime.getEpochSecond();
int nanoFromBeginningOfSecond = datetime.getNano();
double nanoAsFraction = datetime.getNano()/1e9;

// Now, let's put that as text
double epochSecondUTCPlusNano = secondsFromEpoch + nanoAsFraction;
NumberFormat format = DecimalFormat.getInstance();
format.setMinimumFractionDigits(6);
format.setMaximumFractionDigits(6);
format.setGroupingUsed(false);
System.out.print(format.format(epochSecondUTCPlusNano));

【讨论】:

  • 感谢您的回复。我得到了这个“1586426623.416”值。但它没有得到微秒值。
  • 对不起,我不明白。 .416 是秒的分数,因此是微秒值。如果您需要正好 6 个小数位,可以为数字格式添加一行配置:format.setMinimumFractionDigits(6)
猜你喜欢
  • 1970-01-01
  • 2016-06-15
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 2017-08-22
  • 2020-02-06
  • 2015-11-18
相关资源
最近更新 更多