Droid API 22+的日期/持续时间选项(在Kotlin中)?

时间:2018-07-18 22:13:07

标签: android date duration android-5.1.1-lollipop

我正在将iOS应用程序移植到Android(目标API为22)。我做了很多Date / TimeInterval的工作。我使用UTC进行所有操作,因此对我有用。

我在为Android使用什么方面苦苦挣扎。有日期(从时间开始,哈哈)。我想我可以通过将time毫秒属性转换为/来进行持续时间数学运算。我不清楚适用于哪些区域/规则。

我看到有人似乎将“日历”用作“日期”对象并将其传递。似乎有点不对。

然后有新的Java 8 java.time东西,实际上看起来很完整(ZonedDateTime,Duration等)。但这是API 26及更高版本。有可靠的后端口吗?

我的需求非常基本(我认为):

  • 抓住“现在”时间(以UTC为单位)
  • 能够减去两次并获得时间增量
  • 能够从时间中减去时间增量以获得新的时间
  • 能够在时间上添加时间增量以获得新时间
  • 能够显示/字符串化当前/本地时区的时间

    ...以及作为奖励

  • 从ISO8601字符串之类的实例中轻松实例化给定的UTC时间,以进行单元测试

1 个答案:

答案 0 :(得分:1)

是的,有一个“ Java 8程序”的反向移植,也称为 java.time 或仅是现代Java日期和时间API。反向端口甚至专门针对Android进行了修改。

  • 对于非Android Java 6和7,请获取ThreeTen Backport,即新类的Backport(JSR 310的ThreeTen;请参见底部的链接)。
  • 对于22级的Android API(以及26以下的任何版本),请使用Android版本的ThreeTen Backport。叫做ThreeTenABP。并确保您使用子包从org.threeten.bp导入日期和时间类。

有人告诉我依赖性是:

compile group: 'org.threeten', name: 'threetenbp', version: '1.3.3', classifier: 'no-tzdb'

很抱歉,我自己没有使用ThreeTenABP的经验。我对java.time的经验表明,这正是您所需要的。 backport是由开发 java.time 的人开发的,因此我立即假设它是可靠的。唯一的限制似乎是它没有随着Java 9及更高版本中添加到java.time的(次要)新功能而升级。

链接