首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

使用java根据出生日期怎么得到还有几天就生日了

2012-04-23 
使用java根据出生日期如何得到还有几天就生日了?我找了一些办法,但是有问题SimpleDateFormat myFormatter

使用java根据出生日期如何得到还有几天就生日了?
我找了一些办法,但是有问题
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMMdd");
java.util.Date date= new java.util.Date();
myFormatter.format(date);
//java.util.Date date= myFormatter.parse("2011-12-1"); 
String clidate =“19780708”
int year = date.getYear();
String md = clidate.substring(4,8);
String reminder;
if(year<1000) year += 1900;
java.util.Date mydate= myFormatter.parse(year+md);
long day=1+(mydate.getTime() - date.getTime())/(24*60*60*1000);

//if(mydate.equals() ) reminder = "今天生日";

if(day>0&&day<30) reminder = day+"天后生日";
else reminder="";

这样的生日计算有问题,是当天生日的却显示还有1天

[解决办法]
用什么数据库,可以直接在数据库查询时 查出生日距离现在的日 
DateDiff 函数 


返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。 

语法 

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 

DateDiff 函数语法中有下列命名参数: 

部分 描述 
interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔 
Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。 
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。 
firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周
[解决办法]
考虑了下,还有闰年以及明年的问题,所以还是不要直接代码实现了,借助Calendar吧:

Java code
        SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMMdd");        String clidate = "19780330";        Calendar cToday = Calendar.getInstance(); // 存今天        Calendar cBirth = Calendar.getInstance(); // 存生日        cBirth.setTime(myFormatter.parse(clidate)); // 设置生日        cBirth.set(Calendar.YEAR, cToday.get(Calendar.YEAR)); // 修改为本年        int days;         if (cBirth.get(Calendar.DAY_OF_YEAR) < cToday.get(Calendar.DAY_OF_YEAR)) {            // 生日已经过了,要算明年的了            days = cToday.getActualMaximum(Calendar.DAY_OF_YEAR) - cToday.get(Calendar.DAY_OF_YEAR);            days += cBirth.get(Calendar.DAY_OF_YEAR);        } else {            // 生日还没过            days = cBirth.get(Calendar.DAY_OF_YEAR) - cToday.get(Calendar.DAY_OF_YEAR);        }        // 输出结果        if (days == 0) {            System.out.println("今天生日");        } else {            System.out.println("距离生日还有:" + days + "天");        } 

热点排行