методы календаря - PullRequest
1 голос
/ 24 июня 2009

Помимо встроенных функций, можем ли мы использовать любые простые формулы для вычисления дня начала месяца, данного месяца и года, в качестве входных данных ??

Ответы [ 3 ]

3 голосов
/ 24 июня 2009

Да - используйте объект Calendar:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2009)
cal.set(Calendar.MONTH, Calendar.JUNE) //0-based so that Calendar.JANUARY is 0
cal.set(Calendar.DAY_OF_MONTH, 1)

Тогда:

cal.get(Calendar.DAY_OF_WEEK); //is Calendar.MONDAY

Чтобы вы могли легко составить метод для этого:

/** takes a 1-based month so that Jjanuary is 1 */
public int getDayAtStart(int year, int month) {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, year)
    cal.set(Calendar.MONTH, month - 1);
    cal.set(Calendar.DAY_OF_MONTH, 1);
    return cal.get(Calendar.DAY_OF_WEEK); 
}
2 голосов
/ 24 июня 2009

Как всегда, я бы рекомендовал использовать Joda Time . Смею сказать, java.util.Calendar будет работать для этого, но я предпочитаю использовать Joda Time для всех вычислений даты и времени, где это возможно. Встроенные API ужасны. Йода делает это очень просто. (Если не указано, LocalDate предполагает ISOChronology - я ожидаю, что это то, что вы хотите, но вы можете указать другой, если вам нужно.)

import org.joda.time.*;

public class Test
{
    // Just for the sake of a simple test program!
    public static void main(String[] args) throws Exception
    {
        // Prints 1 (Monday)
        System.out.println(getFirstDayOfMonth(2009, 6));
    }

    /** Returns 1 (Monday) to 7 (Sunday) */
    private static int getFirstDayOfMonth(int year, int month)
    {
        LocalDate date = new LocalDate(year, month, 1);
        return date.getDayOfWeek();
    }
}

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

int day = new LocalDate(year, month, 1).getDayOfWeek();

Трудно понять, как это может быть намного проще, чем это:)

1 голос
/ 24 июня 2009

построить календарь (кал) с заданным месяцем и годом, днем ​​1 и cal.get(Calendar.DAY_OF_WEEK) ... извините, не думайте, что для этой задачи есть какие-то встроенные функции

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