由于似乎人们更关心投票而不是阅读实际问题,所以我应该得到的值在底部框中,我的问题就在它下面
我需要根据用户输入的出生日期和今天的日期来查找孩子的年龄。用户可以选择以年、月、周和日为单位查看年龄。我需要确保计算考虑到闰年。我浏览了几篇建议不同技巧的帖子,但到目前为止,我还没有找到任何计算可靠数字的方法。我最接近解决方案的是:
final Calendar bday = Calendar.getInstance();
bday.set(1991, 3, 27);
final Calendar today = Calendar.getInstance();
int yearsDiff = today.get(Calendar.YEAR) - bday.get(Calendar.YEAR); // yearsDiff: 24
if(bday.get(Calendar.MONTH) > today.get(Calendar.MONTH) ||
(bday.get(Calendar.MONTH) == today.get(Calendar.MONTH) && bday.get(Calendar.DATE) > today.get(Calendar.DATE))) {
yearsDiff --;
}
final int monthsDiff = yearsDiff * 12 + today.get(Calendar.MONTH) - bday.get(Calendar.MONTH); // monthsDiff: 296
final long timeOne = bday.getTime().getTime();
final long timeTwo = today.getTime().getTime();
final long oneDay = 1000 * 60 * 60 * 24;
final long delta = (timeTwo - timeOne) / oneDay;
final long year = delta / 365; // year: 24
final long rest = delta % 365; // rest: 232 delta: 8992
final long month = rest / 30; // month: 7
final long rest2 = rest % 30; // rest2: 22 rest: 232
final long weeks = rest2 / 7; // weeks: 3
final long days = rest2 % 7; // days: 1 rest2: 22
yearsDiff 和monthsDiff 都是正确的。正确的值(截至今天,2015 年 9 月 12 日)是:
years: 24
months: 296
weeks: 1289
days: 9023
你会注意到有两个不同的我正在计算其中一些值。那是因为我正在寻找不同的答案并试图找到最佳解决方案。
如何找到正确的周数和天数?