我正在尝试根据用户的出生日期来获取用户的年龄。出生日期以 XML 中的字符串形式给出,并转换为Calendar
如下形式:
final Calendar dob = javax.xml.bind.DatatypeConverter.parseDate(value);
然后我像这样计算用户的年龄:
final Calendar now = Calendar.getInstance();
int age = now.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
if (now.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)) {
--age;
}
我今天发现,如果今天是用户的生日(把派对帽收起来,这不是我的),年龄就太小了一岁。也就是说,如果用户出生于 2000 年,今天是她的生日,她应该是 14 岁,而不是 13 岁。但归根结底,Java 似乎有 DAY_OF_YEAR 错误:
System.out.println(String.format("Today: %d-%d; Birthday: %d-%d", now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH), dob.get(Calendar.MONTH), dob.get(Calendar.DAY_OF_MONTH)));
// prints: Today: 9-22; Birthday: 9-22
System.out.println(String.format("Today: %d; Birthday: %d", now.get(Calendar.DAY_OF_YEAR), dob.get(Calendar.DAY_OF_YEAR)));
// prints: Today: 295; Birthday: 296
是什么赋予了?