在Android中,我应该使用哪个类来处理日期?

8

我目前正在为安卓制作一个应用程序,但我不确定哪个类是最好使用的。

我需要对我所处理的日期进行比较,获取它们之间的差异以及日期计算(例如在给定日期上添加/减去短时间段,如两周或一个月)。

我知道Java API中的标准Date类非常糟糕,因此我想知道推荐使用哪些类?

我看过GregorianCalendar类和Joda Time库。但是,我在一篇帖子上读到,由于Joda Time库的大小,不建议在应用程序中使用。

任何帮助都将不胜感激。 ^^

编辑:根据404notfound的评论,我决定选择Calendar接口。这是因为Calendar接口会自动根据用户设备的区域设置和时区使用最佳实现方式。这将使其比使用GregorianCalendar(或其他特定实现)更灵活,适用范围更广。

希望这对于其他遇到同样问题的人有所帮助!

编辑#2:经过进一步查看Nguyễn Hoài Nam提供的链接,我选择了ThreeTenABP库,因为它是Java 8中新Time类的包装器,比Calendar方法更流畅易用。


@404notfound,就使用方面而言,它与Android中的GregorianCalendar类相比如何?我只是想知道,因为GregorianCalendar是Calendar接口的具体实现。 - Liam Kelly
1个回答

8
我建议您查看ThreeTenABP库作为更好的替代方案(因为我已经将类似的应用程序迁移到使用该库)。 这个库是Android的ThreeTenBP的后移,而ThreeTenBP本身是最新Java 8的日期时间API的Java 6后移(同一作者)。 (我鼓励您先查看Java 8日期时间API的优缺点。)请注意,ThreeTenBP提供了一些与Joda Time相似的动词,因此您不必费力将它们迁移。 最后,正如在此库中所注意到的,方法计数,库大小等始终是Android中的问题。 这个库解决了这个问题。
编辑添加使用指南。
  • 将此库添加到build.gradle中

    compile 'com.jakewharton.threetenabp:threetenabp:1.0.1'

  • 如果没有,请创建您的Application类。例如,您的包是:com.example.app,在该包下放置一个名为MyApplication.java的新文件。这里是代码片段MyApplication

  • 更新您的AndroidManifest.xml <application>标签:在<application下面添加这一行:android:name=".MyApplication"

  • 运行您的应用程序。


看了一下链接,但你可能需要检查链接。开发者表示它在Android系统中非常低效。 - Liam Kelly
这是一个 ThreeTenBP 的 Android 回溯版,请注意名称:ThreeTenABP >< ThreeTenBP。请阅读整个 README.md。 - Nguyễn Hoài Nam
这并没有提供问题的答案。如果您想对作者进行批评或请求澄清,请在他们的帖子下留言。 - Foon
我更新了我的回答@Foon,我为他提供了一个Joda Time的替代解决方案,正如他在问题中所要求的那样,这不是一个回答吗? - Nguyễn Hoài Nam
1
在我审核时,你的回答是“我正在将我的应用迁移到 https://github.com/JakeWharton/ThreeTenABP”...你可以认为这可能被视为仅包含链接的答案,但是由于没有任何提示说明为什么迁移应用会有帮助,我甚至不认为它值得关闭。后来编辑过的回答更好。 - Foon
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接