Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Узнать кол-во дней в месяце


Автор: x8m6 10.7.2010, 09:00
Нужно для заданного месяца и года узнать кол-во дней с учетом того что год может быть високосным. К сожалению имеется ограничение на использование JDK (только версия 1.1). Поэтому метода Calendar.getActualMaximum() нет. 

Автор: ivg 10.7.2010, 11:27
Код

    static int[] MONTH_DAYS_COUNTS = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    public static int getMonthDaysCount(Calendar cal) {
        int month = cal.get(Calendar.MONTH);
        return MONTH_DAYS_COUNTS[month] +
            (month == Calendar.FEBRUARY && (cal.get(Calendar.YEAR) % 4 == 0) ? 1 : 0);
    }

 smile

Автор: Connie 10.7.2010, 21:12
Код

private static int calculateDaysInMonth(final Calendar c) {
        int daysInMonth = 0;
        switch (c.get(Calendar.MONTH)) {
            case 0:
            case 2:
            case 4:
            case 6:
            case 7:
            case 9:
            case 11:
                daysInMonth = 31;
                break;
            case 3:
            case 5:
            case 8:
            case 10:
                daysInMonth = 30;
                break;
            case 1:
                final int year = c.get(Calendar.YEAR);
                daysInMonth =
                        (0 == year % 1000) ? 29 :
                        (0 == year % 100) ? 28 :
                        (0 == year % 4) ? 29 : 28;
                break;
        }
        return daysInMonth;
    }

Автор: cSKA 21.7.2010, 12:30
вот еще:

Код

day = (month != 2) ? ((month <= 7) ? 30 + month%2 : 31 - month%2) : ((year%400 == 0) || (year%4 == 0) && (year%25 != 0) ? 29: 28);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)