JavaScriptによるプログラミング入門
制作・著作: 生物工学科 星 岳彦
オンライン版編集:生物工学科 佐藤 大輔・篠田 績
17.日付計算をしてみる
最後の応用として、日付計算と配列を使うプログラムを例題にする。これは、誕生日を入力するといろいろな計算をするものである。
[作業手順]
(1)次のプログラムをdate.htmとして入力し、NetscapeNavigatorで実行してみよ。
<HTML>
<HEAD>
<TITLE>JavaScript date</TITLE>
<SCRIPT LANGUAGE="JavaScript">
/* 誕生日の計算に応用した例。配列の使用方法。 */
function MakeArray(n) {
this.length = n ;
}
function birth(f) {
var week = new MakeArray(6) ;
week[0]="日" ; week[1]="月" ; week[2]="火" ; week[3]="水" ;
week[4]="木" ; week[5]="金" ; week[6]="土" ;
var today = new Date() ;
by = 1900 + eval(f.YEAR.value) ;
bm = eval(f.MONTH.value) - 1 ;
bd = eval(f.DAY.value) ;
var birthday = new Date(by,bm,bd) ;
ld = Math.floor((today.getTime() - birthday.getTime())/(24*60*60*1000) + 1) ;
we = birthday.getDay() ;
ans = "あなたは生れてから、"+ ld + "日生きました。\n" ;
ans = ans + "75歳の寿命ならば、あと" + (27394 - ld) + "日生きられます。\n" ;
ans = ans + "時間に直すと" + ld * 24 + "時間です。" ;
ans = ans + "そのうち、" + ld * 8 + "時間は寝ていて、\n" + ld * 2 +
"時間は食事をしていた計算になります。\n" ;
ans = ans + "また、" + week[we] + "曜日生まれで、今年誕生日を過ぎると" +
Math.ceil(ld/365.25) + "歳になります。\n"
f.RESULT.value = ans ;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
誕生日 19<INPUT SIZE=2 NAME="YEAR">年
<INPUT SIZE=2 NAME="MONTH">月
<INPUT SIZE=2 NAME="DAY">日
<INPUT TYPE=BUTTON VALUE="計算" onClick="birth(this.form)"><BR>
<TEXTAREA NAME="RESULT" ROWS=5 COLS=60></TEXTAREA>
</FORM>
</BODY>
</HTML>
日付の計算をするために専用の変数が用意されている。その定義は、
var xxx = new Date(yy,mm,dd) ;
で行うことができる。xxxが変数名になり、19yy年mm月dd日に設定される。yy、mm、ddを省略すると今日の日付に初期化される。日付の変数に.getTime()を付けると、1970年1月1日午前0時0分0秒からの経過秒数が、1000分の1秒単位で得られる。それを24時間×60分×60秒×1000ミリ秒で割ってやることで日付が求められる。また、日付の変数に.getDate()を付けると、その日の曜日が0=日曜日〜6=土曜日の数値で得られる。
また、配列とは、一つの名前の変数で複数の項目を記憶できるようにしたものである。それを定義するためにMakeArray(n)という関数を定義している。ここでは、weekという変数を配列として、week[0]〜week[6]までで、日本語の曜日を表示させるために使用している。week[we]のweに先ほどのgetDate()関数で求めた数値をセットしてやることで、日本語での曜日の表示を可能にした。
生活時間の計算は、生れてから一日平均8時間睡眠していて、平均2時間食事をしているものと仮定して計算を行った。なお、\nは変数ansの中での改行を表す記号である。複数の行を表示するためには、セレクトボックスのほかにテキストエリヤがある。今回は、テキストエリアを使って、5行×60列の表示を行っている。
(2)実行例

| ←戻る | 目 次 | 進む→ |
|---|
Copyright (c) 1997 Takehiko Hoshi