【问题标题】:Android convert double to durationAndroid将双倍转换为持续时间
【发布时间】:2018-03-16 14:28:57
【问题描述】:

我正在尝试将 excel 公式转换为 Kotlin 代码。但是我在将双精度转换为持续时间时遇到了问题。 Excel 以持续时间格式显示。如何转换为 Duration 格式?我不能使用 Duration 因为 API 级别小于 26。

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

我能够以数字格式获取它。但无法将其转换为持续时间。

【问题讨论】:

  • 目前还不清楚你想要什么作为输出。你想要字符串"0:47:22"吗?该数字是天数,因此您可以将其乘以 24*60*60 以获得秒数,然后将其格式化为您想要的字符串。
  • 这似乎不是 excel 的问题...为什么要这样标记它?
  • 可以在您的 API 级别使用来自 java.time(现代 Java 日期和时间 API)的 Duration。将 ThreeTenABP 添加到您的 Android 项目中,请参阅 How to use ThreeTenABP in Android Project。然后确保从org.threeten.bp 导入,例如org.threeten.bp.Duration

标签: java android excel-formula kotlin duration


【解决方案1】:

我不确定以下是否是最佳解决方案。您也许能够以某种方式从 Excel 中获得更好的东西。无论如何它都有效。

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

打印出来

PT47M21.576008544S

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

由于 API 级别低于 26,我无法使用 Duration。

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

链接

【讨论】:

    猜你喜欢
    • 2019-12-16
    • 2020-07-02
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2015-11-11
    • 1970-01-01
    相关资源
    最近更新 更多