разницы в днях с использованием календаря в Java - PullRequest
0 голосов
/ 02 марта 2012

Я использую Calendar Class в своем приложении для Android, чтобы вычислить день года даты, а затем провести некоторое сравнение с текущим днем ​​года.Вот код, который я использую:

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);

Я отлаживаю свое приложение и вижу следующее значение для текущего дня: пт мар 02 14:18:33 Азия / Тегеран 2012

и дляarg0: пт мар 02 00:00:00 Азия / Тегеран 1979

И у "nowC" 62, а у d1C 61.

Я ожидаю, что они равны, потому что обаимеет тот же месяц и день, также если я использую класс DateTime пакета joda, как показано ниже, я получаю те же результаты:

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

Почему это происходит?

1 Ответ

2 голосов
/ 02 марта 2012

2012 год был високосным, 1979 - нет. До 2 марта этого года есть дополнительный день, поэтому оба API дают правильный ответ!

Я подозреваю, что вы хотите сравнить месяц и день месяца, чтобы получить ожидаемую семантику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...