我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
我想在Java方法中将一个年龄作为int返回.我现在有以下内容:getBirthDate()返回Date对象(出生日期;-)):
public int getAge() {
long ageInMillis = new Date().getTime() - getBirthDate().getTime();
Date age = new Date(ageInMillis);
return age.getYear();
}
Run Code Online (Sandbox Code Playgroud)
但是因为getYear()被弃用了,我想知道是否有更好的方法来做到这一点?我甚至不确定这是否正常,因为我还没有进行单元测试.
在Android上使用Joda 1.6.2
以下代码挂起约15秒.
DateTime dt = new DateTime();
Run Code Online (Sandbox Code Playgroud)
最初发布这篇文章 Android Java - Joda Date在Eclipse/Emulator中很慢 -
刚试了一次它仍然没有更好.有没有其他人有这个问题或知道如何解决它?
在Joda中,我们可以计算2个Datetime之间的年份
Years.between(dateTime1, dateTime2);
Run Code Online (Sandbox Code Playgroud)
是否有任何简单的方法可以在2个时刻之间找到使用java.timeAPI而没有太多逻辑的年份?
ChronoUnit.YEARS.between(instant1, instant2)
Run Code Online (Sandbox Code Playgroud)
失败:
Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Years
at java.time.Instant.until(Instant.java:1157)
at java.time.temporal.ChronoUnit.between(ChronoUnit.java:272)
...
Run Code Online (Sandbox Code Playgroud) android ×2
datetime ×2
java ×2
calendar ×1
date ×1
java-8 ×1
jodatime ×1
threetenabp ×1
threetenbp ×1