日時を取得して表示する

広告

本日の日付を取得して、それに基づいたカレンダーを自動で表示するように変更します。

まず日付を取得し、カレンダーの形式で表示されるようにJavaのアプリケーションを作成してみます。

下記の簡単なプログラムは現在の日付を取得し、その日付が含まれる月のカレンダーを表示するものです。(※Calendarクラスについては『Calendarクラス』を参照して下さい)。

testCalendar1.java

import java.util.Calendar;

class testCalendar1{
  public static void main(String args[]){
    Calendar calendar = Calendar.getInstance();

    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH);
    int day = calendar.get(Calendar.DATE);

    System.out.print("本日の日時は");
    System.out.println(year + "年" + (month + 1) + "月" + day + "日");

    /* 今月が何曜日から開始されているか確認する */
    calendar.set(year, month, 1);
    int startWeek = calendar.get(Calendar.DAY_OF_WEEK);
    System.out.println("今月の曜日は" + startWeek + "から");

    /* 先月が何日までだったかを確認する */
    calendar.set(year, month, 0);
    int beforeMonthlastDay = calendar.get(Calendar.DATE);
    System.out.println("先月は" + beforeMonthlastDay + "日まで");

    /* 今月が何日までかを確認する */
    calendar.set(year, month + 1, 0);
    int thisMonthlastDay = calendar.get(Calendar.DATE);
    System.out.println("今月は" + thisMonthlastDay + "日まで¥r¥n");

    int[] calendarDay = new int[42];
    int count = 0;

    /* 先月分の日付を格納する */
    for (int i = startWeek - 2 ; i >= 0 ; i--){
      calendarDay[count++] = beforeMonthlastDay - i;
    }

    /* 今月分の日付を格納する */
    for (int i = 1 ; i <= thisMonthlastDay ; i++){
      calendarDay[count++] = i;
    }

    /* 翌月分の日付を格納する */
    int nextMonthDay = 1;
    while (count % 7 != 0){
      calendarDay[count++] = nextMonthDay++;
    }

    int weekCount = count / 7;

    for (int i = 0 ; i < weekCount ; i++){
      for (int j = i * 7 ; j < i * 7 + 7 ; j++){
        if (calendarDay[j] < 10){
          System.out.print(" " + calendarDay[j] + " ");
        }else{
          System.out.print(calendarDay[j] + " ");
        }
      }

      System.out.print("¥r¥n");
    }
  }
}

上記のプログラムを実行すると次のように表示されます。

スケジュール管理

作成したサンプルを元にして、サーブレットを実行した時の日付に基づいてカレンダーを自動で表示するように変更してみます。

MonthView2.java [HTMLで表示]

コンパイルして作成されたクラスファイルを「(root)¥WEB-INF¥classes¥」ディレクトリに配置します。

D:¥servlet-sample
   |
   +--schedule
       |
       +-- (top.html)
       |
       +-- WEB-INF
       |    |
       |    +-- classes
       |          |
       |          +-- (MonthView2.class)
       |
       +-- img

また作成したサーブレットを呼び出せるように「web.xml」を次のように書き換えます。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  version="2.4">

  <servlet>
    <servlet-name>MonthView</servlet-name>
    <servlet-class>MonthView2</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>MonthView</servlet-name>
    <url-pattern>/MonthView</url-pattern>
  </servlet-mapping>
</web-app>

今回は直接サーブレットを呼び出します。ブラウザで「http://localhost:8080/schedule/MonthView」へアクセスします。次のように表示されます。

スケジュール管理

見た目は同じですが、今回のものは現在の日付を取得し、その日付に合わせてカレンダーを表示しています。

( Written by Tatsuo Ikura )