【发布时间】:2014-12-02 06:09:20
【问题描述】:
我编写了一个程序来根据从日期选择器中选择的日期计算一个人的年龄,并且它工作正常。 现在我添加了另一种方法来显示剩余的天数以及该人的生日落在他的下一个生日的那一天
private void calculateNextBirthday() {
// TODO Auto-generated method stub
Date dt = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy/MM/dd");
final String strBDay = sdf.format(dt);
try {
dt = sdf.parse(strBDay);
} catch (final java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
final Calendar c = Calendar.getInstance();
c.setTime(dt);
// c.add(Calendar.DATE, value);
final Calendar today = Calendar.getInstance();
// Take your DOB Month and compare it to current
// month
final int BMonth = c.get(Calendar.MONTH);
final int CMonth = today.get(Calendar.MONTH);
c.set(Calendar.YEAR, today.get(Calendar.YEAR));
c.set(Calendar.DAY_OF_WEEK,
today.get(Calendar.DAY_OF_WEEK));
if (BMonth <= CMonth) {
c.set(Calendar.YEAR,
today.get(Calendar.YEAR) + 1);
}
// Result in millis
final long millis = c.getTimeInMillis()
- today.getTimeInMillis();
// Convert to days
final long days = millis / 86400000; // Precalculated
// (24 *
// 60 *
// 60 *
// 1000)
// final String dayOfTheWeek =
// sdf.format(BDay.getTime());
sdf = new SimpleDateFormat("EEEE");
final String dayOfTheWeek = sdf.format(dt);
txt8.setText("" + days + " days");
txt10.setText("" + dayOfTheWeek);
}
此程序中的问题是剩余天数基于今天的日期而不是从日期选择器中选择的日期,这意味着即使我从日期选择器中选择任何其他日期,剩余天数仍然保持不变并且dayoftheweek 也显示相同,我希望两者都根据所选日期进行更改
还附上两个不同生日的截图,我截图的最后两行的输出是相同的
当从日期选择器中选择任何日期时,我的程序会正确显示人的年龄,就像我希望我的剩余天数和人的生日落在哪一天改变一样,当从日期选择器中选择任何日期时日期选择器 关于我需要在上面的代码中做哪些更改,请需要一些帮助 任何的意见都将会有帮助 谢谢你
【问题讨论】: