猿问

TimeDelta Java?

我正在尝试将代码从Python转换为Java。我需要timeDelta用Java重写该函数。这是Python中的代码:

def timeDate(date):
    return (timedelta(seconds=date * 3600 % 86400))

有人对如何使功能相同的功能有任何想法吗?


拉风的咖菲猫
浏览 221回答 3
3回答

互换的青春

   double hours = 21.37865107050986;    long nanos = Math.round(hours * TimeUnit.HOURS.toNanos(1));    Duration d = Duration.ofNanos(nanos);    // Delete any whole days    d = d.minusDays(d.toDays());    System.out.println(d);打印:PT21H22M43.143853836S这意味着:持续时间21小时22分43.143853836秒。假设:我知道您想要一个持续时间(您链接的文档说“一个timedelta对象代表一个持续时间”)。我已经将date小时数作为浮点数了,您的取模运算使我相信您希望对1天取模的持续时间(因此26小时应取为2小时的持续时间)。DurationJava中的类具有持续时间,因此是您应该使用的类。它不接受用于创建的浮点数,因此我将您的小时数转换为十亿分之一秒,并四舍五入为整数。对于转换,我乘以从调用到的1小时内的纳秒数TimeUnit(与乘除自己相比,这提供了更清晰,更容易出错的代码)。上面的代码会在很长时间内默许给出错误的结果,因此您在使用前应检查范围。最多2 500 000小时(100 000天或将近300年),您应该是安全的。请注意:如果date不是一天中的某个时间,而不是一个持续时间,那就完全不一样了。在这种情况下,您应该LocalTime在Java中使用。恰好是一天中的某个时间(没有日期和时区)。 nanos = nanos % TimeUnit.DAYS.toNanos(1);    LocalTime timeOfDay = LocalTime.ofNanoOfDay(nanos);    System.out.println(timeOfDay);21:22:43.143853836链接: 该类的文档Duration

慕少森

据我所知,Java没有内置的DeltaTime函数。但是,您可以轻松地自己制作。long startTime; long delta; public void deltaTime(){ long currentTime = System.currentTimeMillis(); delta = currentTime - startTime;}每当您想启动DeltaTime计时器时,都只需执行time = System.currentTimeMillis;。这样,变量“ delta”是启动DeltaTime计时器到使用结束它之间的时间量ClassNameHere.deltaTime();。

小唯快跑啊

private static LocalTime timeDate(double d) {    //converts into a local time     return LocalTime.ofSecondOfDay((long)(d*3600%86400));   }输入(d):36.243356711275794输出:21:22:43
随时随地看视频慕课网APP

相关分类

Python
我要回答