我有字符串日期“3.9.1991”。我想获得自该日期以来已经过去了多少年。例如 23. 我如何使用日历或日期来实现它?
编辑:
我一直在尝试这个:
private String parseVkBirthday(String birthdayString) {
// 3.9.1991
SimpleDateFormat formatter = new SimpleDateFormat("d.M.yyyy");
String formattedDate = null;
Calendar date = Calendar.getInstance();
int year = 0;
try {
Date currentDate = new Date();
Date birthdayDate = formatter.parse(birthdayString);
Log.d(LOG_TAG, "year1 = " + currentDate.getTime() + " year2 = " + birthdayDate.getTime());
long diff = currentDate.getTime() - birthdayDate.getTime();
birthdayDate.setTime(diff);
date.setTime(birthdayDate);
year = date.get(Calendar.YEAR);
} catch (ParseException e) {
e.printStackTrace();
}
return "" + year;
}
但它返回给我的是 1993。
答案:
有3种方法可以解决这个问题:
1) 正如 codeaholicguy 回答的那样,我们可以使用 Joda-Time库(我更喜欢 Android 的)。
2) 正如 Basil Bourque 回答的那样,我们可以使用 ThreeTen-Backport使用 java 8 中的 java.time 类的库。
3) 我们可以使用 java 8 和 java.time 中的类。
谢谢大家。
最佳答案
使用SimpleDateFormat
和 Period
的 Joda-Time库,示例如下:
String pattern = "dd.MM.yyyy";
SimpleDateFormat format = new SimpleDateFormat(pattern);
Date date = format.parse("3.9.1991");
System.out.println(date);
Period period = new Period(date.getTime(), (new Date()).getTime());
System.out.println(period.getYears());
关于java - 如何从字符串中获取经过的年数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31314351/