当前位置: 首页 > 知识库问答 >
问题:

如何从纪元微秒或纳秒创建 Java 即时?

徐智渊
2023-03-14

我正试图为我的项目标准化时间戳格式,其中源以微秒精度报告。我试图找出是否有一种干净的或者最小化的方法,不需要使用手写的常量。

共有1个答案

屈浩波
2023-03-14

谢谢你的建议。这是我能想到的最干净的:

static Instant getInstantFromMicros(Long microsSinceEpoch) {
  return Instant.ofEpochSecond(TimeUnit.MICROSECONDS.toSeconds(microsSinceEpoch), TimeUnit.MICROSECONDS.toNanos(Math.floorMod(microsSinceEpoch, TimeUnit.SECONDS.toMicros(1))));
}

static Instant getInstantFromNanos(Long nanosSinceEpoch) {
  return Instant.ofEpochSecond(0L, nanosSinceEpoch);
}

测试案例:

System.out.println(getInstantFromMicros(1_500_000_000_123_456L));
// 2017-07-14T02:40:00.123456Z

System.out.println(getInstantFromNanos(1_500_000_000_123_456_789L));
// 2017-07-14T02:40:00.123456789Z
 类似资料:
  • 这个问题我已经研究了一段时间,但我只能得到秒数,下面是给我的说明:编写一个程序,从代表纳秒数的标准输入中读取一个非负整数。然后,程序编写一行输出,给出等效的天、小时、分钟、秒、毫秒、微秒和纳秒的数量。例如,输入为123456789123456789。则输出为:123456789123456789纳秒等于1428天、21小时、33分钟、9秒、123毫秒、456微秒和789纳秒。这是我写的: }

  • 2015-05-09 00:10:23.999750900//后9位表示纳秒 当通过模式解析时 YYYY-MM-DD HH:MM:SS.SSSSSSS//9“s”符号 null null 有没有其他方法可以通过只向标准实现提供一个模式来获得正确的解决方案,而不需要任何其他代码修改或字符串操作?

  • 我正在尝试生成一个分辨率为微秒的时间戳。我试着用这个答案提取年/月/日等,来自C++中的std::chrono::time_point,还有这个:C++11实际系统时间(毫秒),但我不确定这样做是否正确: 该代码的输出为: 324760155[2019-09-15 10:09:13.324.324760][2019-09-15 10:09:13.324.324760]

  • 问题内容: Java 8 有一个方法。不幸的是,中没有这样的方法。现在,我有了一个Epoch值和一个明确的给定值。我如何才能摆脱这些? 问题答案: 您应该可以通过该类来执行此操作,该类可以代表给定时间的时刻。如果您有新纪元,您可以通过类似

  • 两个时间戳的示例 困难的部分原因是我认为没有类似的包来处理它。我不确定是否需要使用正则表达式来提取秒,然后将纳秒转换为毫秒。我愿意接受任何建议。 另外,您建议如何处理?我想我应该使用,然后像这样的包可以解析时间戳,甚至可以达到纳秒级的精度?

  • 我试图解析一个字符串,下面的表单2010-10-12-18-43-55到当前时区自纪元以来的秒。这是我试过的 我。