Java Android将双精度转换为持续时间

Java Android将双精度转换为持续时间,java,android,excel-formula,kotlin,duration,Java,Android,Excel Formula,Kotlin,Duration,我正在尝试将excel公式转换为Kotlin代码。但我面临着将双精度转换为持续时间的问题。Excel以持续时间格式显示。如何转换为持续时间格式?我不能使用持续时间,因为API级别低于26 The result in Excel Duration format - 0:47:22 Excel Number format - 0.03288861121 我能得到它的数字格式。但无法将其转换为持续时间。我不确定以下是否是最佳解决方案。你也许可以从Excel中获得更好的东西。无论如何,它是有效的

我正在尝试将excel公式转换为Kotlin代码。但我面临着将双精度转换为持续时间的问题。Excel以持续时间格式显示。如何转换为持续时间格式?我不能使用持续时间,因为API级别低于26

The result in 
Excel Duration format - 0:47:22
Excel Number format - 0.03288861121

我能得到它的数字格式。但无法将其转换为持续时间。

我不确定以下是否是最佳解决方案。你也许可以从Excel中获得更好的东西。无论如何,它是有效的

    double durationDoble = 0.03288861121;
    Duration dur = Duration.ofNanos((long) (durationDoble * TimeUnit.DAYS.toNanos(1)));
    System.out.println(dur);
这张照片

PT47M21.576008544S

如果您不习惯
持续时间
类和/或ISO 8601格式,它可能看起来有点滑稽,但它意味着47分21.576秒,因此如果四舍五入到整秒,它符合您的预期

我不能使用持续时间,因为API级别低于26

是的,您可以在小于26的API级别中使用java.time(现代java日期和时间API)中的
Duration
。将ThreeTenABP添加到Android项目中,并确保导入
org.threeten.bp.Duration

链接

  • ,解释如何使用
    java.time
  • (JSR-310为三十,其中java.time是第一次被描述的)
  • ,Android版Three Ten Backport
  • ,解释得非常透彻

不清楚您想要什么样的输出。是否需要字符串
“0:47:22”
?数字是天数,因此您可以将其乘以
24*60*60
以获得秒数,然后将其格式化为字符串。excel似乎没有问题。。。为什么要这样标记呢?您可以在API级别使用java.time(现代java日期和时间API)中的
Duration
。将ThreeTenABP添加到Android项目中,请参阅。然后确保从
org.threeten.bp
导入,例如
org.threeten.bp.Duration