在java中使用日历的日差异

问题描述:

我在我的android应用程序中使用Calendar类来计算日期的一年中的某一天,然后与当前的某一天进行比较。下面是我的代码使用方法:在java中使用日历的日差异

Date now=new Date(); 
Calendar ca1 = Calendar.getInstance(); 
     ca1.set(now.getYear(), now.getMonth(), now.getDate()); 
     int nowC=ca1.get(Calendar.DAY_OF_YEAR); 

//Date arg0=say,get from user 
     Calendar ca2 = Calendar.getInstance(); 
     ca2.set(arg0.GetBirthDay().getYear(),arg0.GetBirthDay().getMonth(),arg0.GetBirthDay().getDate()); 
     int d1C=ca2.get(Calendar.DAY_OF_YEAR); 

调试我的应用程序,我看到当天以下值: 周五3月2 14时18分33秒通社亚洲/德黑兰2012

以及为arg0: 周五3月2日00:00:00亚洲/德黑兰1979年

和“nowC”得到了62,和“D1C”得到了61

我希望他们都能平等事业两者具有相同的月和日,也如果我使用DateTime类的joda包,如下所示,我得到了相同的结果:

int ndy=dtnow.getDayOfYear(); 
int d1dy=dt1.getDayOfYear(); 

为什么会发生?

2012年是闰年,1979年并非如此。今年3月2日前还有一天 - 所以这两种API都能给你正确的答案!

我怀疑你想比较月份和日期,以得到你期待的语义。

+0

准确地说,我想比较某人的当天生日,以及你知道生日的月份和日期更重要的是它的年份 – 2012-03-02 11:07:49