【问题标题】:What is the Android equivalent of java.time.Duration?java.time.Duration 的 Android 等价物是什么?
【发布时间】:2017-02-26 19:45:59
【问题描述】:

我需要使用类似java.time.Duration 的类来表示从亚微秒到秒的时间间隔。但 Android Studio 没有为我提供这个选项。

我想我可以使用float 并将所有内容表达为秒,但这似乎不太直观和有意义。

这些间隔与任何现实世界的时间线无关,它们只是,嗯,间隔。

【问题讨论】:

  • 可能是javax.xml.datatype.Duration?或者只是导入 JodaTime
  • java.time库无论如何只能在Java 8中生效,而我上次检查,Android最多只能使用Java 7。您可以通过第三方获得此效果像 Joda Time 这样的图书馆。
  • @Makoto 可能想更新你的知识:) developer.android.com/guide/platform/j8-jack.html
  • @cricket_007:好的,这是一个子集。但不是 OP 关心的子集,也不是我好奇的子集。
  • @cricket_007 & Makoto – Joda-Time 项目现在位于 maintenance mode,并建议迁移到 java.time 类。大部分 java.time 功能在ThreeTen-Backport 中向后移植到 Java 6 和 7,在ThreeTenABP 中进一步适应 Android。此反向端口包括Duration。见my Answer

标签: java android time


【解决方案1】:

后向端口

请参阅 Java 6 和 7 的 back-port of much of java.time 及其 adaptation for Android。请参阅下面的详细信息。

后端端口包括org.threeten.bp.Duration 类。


关于java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

从哪里获得 java.time 类?

【讨论】:

  • 感谢您的澄清;)您可能已经厌倦了用相同的格式重复回答这些“简单”的日期时间问题。
【解决方案2】:

您可能会发现导入JodaTime 库并从中使用持续时间类可能会有所帮助,因为您无权访问java.time 库。 据我所知,IntervalReadableDuration 类可能有用,但都没有明确提供 getSeconds() 方法。

如果您可以使用上述类来存储您的持续时间,您可以创建一个静态类以更直观的方式将毫秒转换为秒。

float durationInSeconds MyTime.milliToSeconds(myDuration.getMillis())

【讨论】:

【解决方案3】:

ThreeTenABP 所述,如果您的 gradle 插件是 v4.0,您应该使用去糖功能

您可以在此处找到如何打开脱糖功能: android library desugaring

这很简单。

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多