代码之家  ›  专栏  ›  技术社区  ›  Travis Griggs

DroidAPI 22+日期/持续时间选项(以Kotlin为单位)?

  •  0
  • Travis Griggs  · 技术社区  · 6 年前

    我正在将一个ios应用程序移植到android,目标api 22。我做一些约会/时间间隔的事情。我都是用UTC做的,所以对我来说很有用。

    我在为Android的使用而挣扎有日期(从时间开始,哈哈)我想我可以通过转换到 time 毫秒属性。我不清楚哪些区域/规则适用于这些。

    我看到一些人似乎把日历当作日期对象,然后到处传递好像有点不对劲。

    然后是新的Java 8 Java.time,看起来非常完整(zoneDateTime、Duration等)但那是API 26和更新的有可靠的后门吗?

    我的需求很基本(我认为):

    • 抓取“现在”时间(UTC)
    • 能够减去两次,得到时间差
    • 能够从一个时间中减去一个时间差得到一个新时间
    • 能够将时间增量添加到时间以获取新时间
    • 能够显示/串接当前/本地时区中的时间

      ... 作为奖励

    • 为了进行单元测试,可以很容易地从ISO8601字符串中实例化给定的UTC时间
    1 回复  |  直到 6 年前
        1
  •  1
  •   Anonymous    6 年前

    是的,有一个Java8的后台端口,也称为 java.time公司 或者只是现代的Java日期和时间API。backport甚至已经专门针对Android进行了调整。

    • 对于非android java 6和7,获取三个十的backport,即新类的backport(对于jsr 310,三个十;请参阅底部的链接)。
    • 对于android api级别22(以及任何低于26的版本),请使用android版本的threeten backport。它被称为“三步走”。并确保从中导入日期和时间类 org.threeten.bp 有分装的。

    我被告知依赖关系是:

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

    很抱歉,我自己没有3TENABP的经验我对java.time的经验表明,它正是您所需要的。后端口是由开发 java.time公司 ,所以我马上认为它是可靠的。唯一的限制似乎是它没有升级到java 9和更高版本的java.time中添加的(次要的)新功能。

    链接