java - 如何从纪元微秒或纳秒创建 Java Instant?

标签 java timestamp

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

最佳答案

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

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

关于java - 如何从纪元微秒或纳秒创建 Java Instant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56063880/

相关文章:

sql - 用于从时间戳中减去时间的 Oracle SQL 查询

sql - Firebird 2.1 TIMESTAMP 算术和民用间隔

java - 如何从 JdateChooser 中添加 2 天的天数?

java - 如何在java中添加一个名为number Of Digits()的新方法?

java - 如何通过 jdbc 在 PostgreSQL 中使用 Before Christ 日期编写时间戳?

python - 使用 Matplotlib 绘制时间戳(小时/分钟/秒)

PHP:将负时间戳转换为日期

java - 我如何使用 bugzilla rest api 方法/bug 列出错误

java - PDFBox 打印列表并在需要时添加新页面

Java8 : Map<X, Y> 到 Map<X, Z> 使用 RxJava