hubert
41 уровень

Говнокод #4

Статья из группы Архив info.javarush
public static int daysBetween(Date startDate, Date endDate) { int difInDays = (int) ((endDate.getTime() - startDate.getTime())/(1000*60*60*24)); }
Комментарии (9)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
IvanDurov Уровень 25
27 апреля 2014
Недавно делал, оставил так:
int days = Period.between(startDate, endDate).getDays();
Anton_n Уровень 33
24 апреля 2014
В какой-то из задачек я делал вроде именно так :)

Объясните, плиз, чем этот код плох.
MSBlast Уровень 30
22 апреля 2014
На stackoverflow все советуют использовать чудо библиотеку Joda. С применением которой код выглядел бы так:

import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.Days;

public static int daysBetween(Date startDate, Date endDate)
{
return Days.daysBetween(new DateTime(startDate), new DateTime(endDate)).getDays(); 
}


Если использовать только стандартные классы, то можно и так, в таком случае будет хотя бы учитываться високосный год:


    public static int daysBetween(Date startDate, Date endDate)
    {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(startDate);
        Calendar c2 = Calendar.getInstance();
        c2.setTime(endDate);
        int daysBetween = 0;
        while (c1.before(c2))
        {
          c1.add(Calendar.DAY_OF_MONTH,1);
            daysBetween++;
        }
        return daysBetween;
    }