gpt4 book ai didi

java - 将 Java Instant 转换为 .Net DateTime.Ticks

转载 作者:行者123 更新时间:2023-11-30 06:16:49 25 4
gpt4 key购买 nike

我需要将 Instant 转换为 .Net 的 DateTime.Ticks ,即一个长整型,表示自 0001 年 1 月 1 日 0:00:00 UTC 以来的一百纳秒数。

不幸的是,没有像 ChronoUnit.HUNDRED_NANOS 这样的东西,所以似乎人们必须滚动自己的代码。

最佳答案

请记住 1 个刻度等于 100 ns 并使用 Eugene Beresovsky 的表示法这里的解决方案是使用 Duration 类以及从 .Net 刻度到 Instant 的转换的另一个解决方案。

static final Instant dotNetEpoch = ZonedDateTime.of(1, 1, 1, 0, 0, 0, 0,
ZoneOffset.UTC).toInstant();

// Converts Instant to .NET Tick
static long toDotNetDateTimeTicks(Instant i) {
Duration d =Duration.between(dotNetEpoch, i);
long secTix =Math.multiplyExact(d.getSeconds(), 10_000_000) ;
long nanoTix = d.getNano()/ 100 ;
long tix = Math.addExact(secTix,nanoTix);
return tix;
}


// Converts .NET Tick to Instant
static Instant toInstantFromDotNetDateTimeTicks(long dotNetTicks) {
long millis =Math.floorDiv(dotNetTicks,10000) ;
long restTicks = Math.floorMod(dotNetTicks,10000);
long restNanos =restTicks*100;
return dotNetEpoch.plusMillis(millis).plusNanos(restNanos);
}

关于java - 将 Java Instant 转换为 .Net DateTime.Ticks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49020567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com