1

以下の情報が提供されますが、自分で調査することをお勧めします。

1 Jan 1900 was a Monday.
Thirty days has September,
April, June and November.
All the rest have thirty-one,
Saving February alone,
Which has twenty-eight, rain or shine.
And on leap years, twenty-nine.
A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.

20世紀(1901年1月1日から2000年12月31日まで)の月の最初に何日日が降りましたか?

解決 :

私の次のロジックは私に173の日曜日を与えますが、171の日曜日があります!! 余分な2日間はどこから来たのですか?

public static void main(String args[]) {

    Date startDate = new Date(1901, Calendar.JANUARY, 01);
    Date endDate = new Date(2000, Calendar.DECEMBER, 31);

    checkSundays(startDate, endDate);
}

private static void checkSundays(Date start, Date end) {
    int dayNum;

    Calendar startDate = Calendar.getInstance();
    startDate.setTime(start);
    System.out.println(startDate.getTime());

    Calendar endDate = Calendar.getInstance();
    endDate.setTime(end);
    System.out.println(endDate.getTime());
    int count = 0;

    while (startDate.before(endDate)) {
        for (int i = 1; i < 13; i++) {
            dayNum = startDate.get(Calendar.DAY_OF_WEEK);
            if (dayNum == 1) {
                count++;
            }

            System.out.println(startDate.getTime());
            startDate.add(Calendar.MONTH, 1);

        }
            System.out.println("Count " + count);

    }
}
4

2 に答える 2

3

次のコードは、非推奨のコンストラクターを使用していますDate

Date startDate = new Date(1901, Calendar.JANUARY, 01);
System.out.println(startDate);

これは適切ではありません、それは印刷します

Thu Jan 01 00:00:00 IST 3801

したがって、を使用Calendarして構築Dateします。

    Calendar startDateCal = createDateInstance(0,1901,1)

    Calendar endDateCal = createDateInstance(11,2000,13)

およびファクトリメソッド

public static Date createDateInstance(int month, int year, int date){
  Calendar cal= Calendar.getInstance();
  cal.set(Calendar.YEAR, year);
  cal.set(Calendar.MONTH, month);
  cal.set(Calendar.DATE, date);

  return cal.getTime();

}

作業コードを見る

于 2012-07-02T10:57:21.217 に答える
0

確率を使用して、電卓だけでこれを行うことができます。

1世紀には100年あり、毎年、月の最初の日は12日です。それを7で割ると、答えが得られます。

安いですが、うまくいきます。

于 2014-02-08T06:13:36.067 に答える