使用Java中的日历的日差异

时间:2012-03-02 11:00:04

标签: android date

我在我的Android应用程序中使用Calendar Class来计算日期的某一天,然后与当前的一天进行一些比较。这是我使用的代码:

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: Fri Mar 02 00:00:00 Asia / Tehran 1979

'nowC'得到62,'d1C'得到61.

我希望它们是平等的,因为它们都有相同的月份和日期,如果我使用DateTime类的joda包,如下所示,我得到相同的结果:

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

为什么会这样?

1 个答案:

答案 0 :(得分:2)

2012年是闰年,1979年不是。今年3月2日前还有一天 - 所以两个API都给你正确的答案!

我怀疑你想要比较月份和月份,以获得你期望的语义。