(BACK)

日付オブジェクト

時間や日付を利用する時は、日付オブジェクトを使用する。

1.日付オブジェクトの作成
まず、日付オブジェクトを作成する。

日付オブジェクト名 = new Date();

これにより、これを実行した瞬間の、日付・時間に関する情報が、全て日付オブジェクトの中に入る。
例えば、21時15分にこれが実行された場合、この中に入っている情報は常に21時15分であり、自動的に更新されたりはしない。
またこれらはPCの時計を利用しているので、厳密に正しい時間は取得できない。

日付オブジェクト名は、ひとつの日付オブジェクトにつける名前であり、変数と同じ規則で命名する。スプライトにおけるインスタンス名と同じである。

2.日付オブジェクトの中身
日付オブジェクトが作成されると、以下のような変数が利用出来る。

日付オブジェクト名.getFullYear()
西暦(4桁)
日付オブジェクト名.getMonth()
月(0~11)
実際に使う際には1を足すこと
日付オブジェクト名.getDate()
日(1~31)
日付オブジェクト名.getDay()
曜日(0~6)
0から順に、日月火水木金土
日付オブジェクト名.getHours()
時(0~23)
日付オブジェクト名.getMinutes()
分(0~59)
日付オブジェクト名.getSeconds()
秒(0~59)
日付オブジェクト名.getMilliseconds()
ミリ秒(0~999)
日付オブジェクト名.getTime()
1970年1月1日0時0分から数えた経過ミリ秒

例えば、現在の時刻を、txtというテキストに表示したい場合は、以下のようになる。
dt = new Date(); //日付オブジェクトdtを作成

txt = "現在 " + dt.getHours() + "時" + dt.getMinutes() + "分" + dt.getSeconds() + "秒";

時計のように自動的に更新されるようにするには、
1.日付オブジェクトを作成する
2.それを元に表示する

という作業を延々続ければよい。

3.getTime()について
さて日付オブジェクトで利用出来る変数の中で、いまいち使い道がピンと来ないのがgetTime()である。
これは今も延々と1ずつ増えている数であり、計測に利用する事が出来る。

時間を測りはじめる瞬間と、測り終わる瞬間で別々にgetTime()を記録しておき、その差を求めれば、ミリ秒単位での時間がわかる。
実際にgetTime()にどんな数が入っているかは全く気にしなくてよい。

//計測開始
dt = new Date();
start_time = dt.getTime(); //計測開始時点のgetTime()を記録

//計測終了
dt = new Date();
end_time = dt.getTime(); //計測終了時点のgetTime()を記録

//計測
sa = end_time - start_time; //差を求める(この時点で単位はミリ秒)
sa = sa / 1000; //なので1000で割って「秒」にする
txt = "結果は" + sa + "秒でした";



また、似た命令でgetTimer()を使う方法がある。
これは日付オブジェクトとは関係ない。
getTimer()の中には、FLASHを実行し始めてから何ミリ秒経ったかが常に入っているので、getTime()と同じノリで使うことができる。

4.練習問題1
日付オブジェクトを利用し、以下のような時計を作成せよ。

曜日の表示が面倒であれば以下のような方法がある。
//あらかじめ、このような配列変数を用意しておく
yobistr = ["日","月","火","水","木","金","土"];

//このようにすれば曜日の1文字が表示出来る
txt = "今日は " + yobistr[dt.getDay()] + "曜日";

5.練習問題2
日付オブジェクトを利用し、ストップウォッチのようなものを作成せよ。
「スタート・ストップ」のボタンを押すと、
1.計測中でない場合は、計測を(0秒から)開始する。計測中は経過時間を表示し続けること。
2.計測中の場合は、計測を終了する。

ヒント:
例えば、
mode == 0 の時、計測していない
mode == 1 の時、計測中
のような変数を用意して管理し、ボタンアクションの中でそれぞれの処理をする。

(BACK)