Processingで曜日のデータを取得する


Processingでは「年月日時分秒」などの日付は関数で取得できますが、曜日を情報を扱うにはJavaパッケージのプログラムを活用します。

ProcessingはJavaベースのプログラミング言語であり、Processingのエディタでプログラムを書いていく中で、Javaパッケージを利用していくことができます。
パッケージ(package)とは、クラスやインタフェースをグループにまとめて分類・管理する仕組みで、パッケージ内のプログラムを活用して多くのことができるようになります。

Processingで曜日データを取得するには、Calendarクラスを利用します。
Calendarクラスは、特定の日付や指定した年・月・日・時、曜日など、カレンダー・フィールド操作を行うための抽象クラスになります。

曜日データの取得


曜日データの取得について見ていきます。
サンプルとして、取得した曜日データに合った曜日を表示するようにしてみます。

Calendarクラスは、「java.util」クラス群に含まれています。
利用する際は、import文でパッケージを読み込みます。

パッケージの読み込み方法は、「import java.util.∗」のようにアスタリスク「∗」でutilパッケージに含まれるすべてのクラスを読み込む、または使いたいクラスを指定します。
ここではCalendarクラスを指定して読み込みます。

以下、サンプルコードになります。

sample_weeks.pde

import java.util.Calendar;

int dayOfWeek;
String[] week_name = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup() {
  size(500, 500);
  Calendar calendar = Calendar.getInstance();
  dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
  println("Array at index:", dayOfWeek);
  println(week_name[dayOfWeek]);
  textSize(60);
  textAlign(CENTER);
  noLoop();
}

void draw() {
  text(week_name[dayOfWeek], width/2, 100);
}



import文でパッケージを読み込み、取得した曜日データを管理する変数「dayOfWeek」を用意します。
配列「week_name」には、取得した曜日データに合わせるように情報を格納しておきます。

Calendarクラスでは、オブジェクトを得るためのクラスやメソッドが定義されており、getInstanceメソッドでオブジェクトを生成します。
getInstanceメソッドは、現在の日付と時間に初期化された状態でオブジェクトを返します。

そして、getメソッドを使って、Calendarクラスのオブジェクトから「DAY_OF_WEEK」で曜日のフィールド値を取得して、変数「dayOfWeek」に格納します。
DAY_OF_WEEKで取得するデータは以下になります。

DAY_OF_WEEK
Sunday(1)
Monday(2)
Tuesday(3)
Wednesday(4)
Thursday(5)
Friday(6)
Saturday(7)



配列のインデックス番号は0から始まりますので、取得した曜日のフィールド値から-1としてデータを管理します。
println文は、変数や配列の値をコンソールへ出力して確認するために書いています。
あとは、文字を表示してみますので、textSize関数やtextAlign関数など。

Processingでの曜日データの取得とコンソールでの確認



draw関数では、text関数を使って文字を表示しています。
配列「week_name」のインデックス番号を、取得して管理している曜日データ「dayOfWeek」として、曜日に合った値が表示されます。

DAY_OF_WEEKの他にも、曜日関連ですと「DAY_OF_WEEK_IN_MONTH」で現在の月の何度目の曜日かを取得することもできます。第2何曜日、第3何曜日といった場合に利用できそうです。

他にもついては、Javaのドキュメントにてフィールドサマリーの部分で確認できます。
↓ ↓ ↓

https://docs.oracle.com/javase/jp/8/docs/api/index.html?java/util/Calendar.html