来自C#,我习惯了光滑的界面DateTime
和TimeSpan
。有了这些,我可以访问日期时间部分(年,月,秒等),基础蜱,减去日期,增加时间增量等。
作为一名Java / Android新手,我了解到等效的Java Date
类过去常常使用这些访问器,但出于反向兼容的原因,它们已被删除。建议的替代方法是使用Calendar
对象,但与.Net相比,我觉得它的界面很麻烦。
是否有一个等效的Java库来简化Android中Date
个对象的操作?
答案 0 :(得分:7)
你可以使用joda-time它是一个外部库,Date&日历是提供的基本API,使用java 8它为日期时间添加了更好的api但是对于Android现在你可以使用joda tiem
答案 1 :(得分:4)
其他答案已过时。
Joda-Time框架是一项非常成功和辉煌的工作。然而,由Stephen Colbourne领导的创建者完成了重写和重新设计,以生成Java 8及更高版本中内置的java.time框架。
许多java.time功能已经被反向移植到Java 6& ThreeTen-Backport项目中的7。这项工作进一步适用于ThreeTenABP项目中的Android。
Joda-Time继续保持。但团队建议我们尽快迁移到java.time。未来的创新工作将进入java.time及其在ThreeTen-Extra项目中的扩展。
我建议您在新代码中使用java.time。无需删除Joda-Time。两个框架都可以在您的项目中共存。请注意您的import
语句,因为一些类在两个框架之间共享一个名称。稍后,一旦您熟悉java.time,您可以考虑重新访问旧代码以逐步淘汰Joda-Time的使用。
ZonedDateTime
请参阅ZonedDateTime
课程。它有您要求的方法,getYear
,getHour
等。
对于未附加到时间轴的时间跨度,请参阅Period
和Duration
类。各种日期时间类都有用于添加或减去此类对象的数学方法。
ThreeTen-Extra库扩展了java.time以及更多方便的类。
答案 2 :(得分:3)
我建议使用这个库而不是Joda:
https://github.com/JakeWharton/ThreeTenABP
原因写在那里:
为什么不使用Joda-Time? Joda-Time有一个非常大的API带来 有一个非常大的二进制大小和大的方法计数。创造者 JSR-310和Joda-Time都表示虽然Joda-Time不是 它确实存在设计缺陷。
如果您已经使用Joda-Time,那么没有什么理由可以切换 除非其大小或方法计数与您相关。对于新项目, 但是,这个库提供了Java 8中的标准API 较小的包不仅包括二进制大小和方法计数,还包括 API大小。
答案 3 :(得分:1)
我只想提供更新的答案。
还有Joda-Time-Android“基于Android构建的Joda-Time版本”。 Jake Wharton拥有自己的图书馆ThreeTenABP。你可能想看一下。
答案 4 :(得分:0)
改进Jigar Joshi的答案,你可以使用joda-time-android,这是一个针对Android设备优化的joda-time的特定于android的端口。