2.3 時刻の表示

■HTMLファイル

 HTMLファイルで時刻を表示する場合は、例えば次のリスト2.7のように記述します。

リスト2.7 time.html

01 <%@ LANGUAGE="VBScript" %>
02 <HTML>
03 <HEAD>
04 <TITLE>time.html</TITLE>
05 </HEAD>
06 <BODY>
07 更新時刻は16時21分です。<BR>
08 </BODY>
09 </HTML>

 静的なHTMLファイルでは、時刻もあらかじめ時刻を表す文字列で記述しておく必要があります。したがって、利用者がHTMLファイルにアクセスした時刻などを動的に表示することができません。

■ASPファイル

 しかし、ASPファイルでは、簡単に現在の時刻をWebページに表示することができます。現在の時刻を表示するためのASPファイルの例をリスト2.8に示します。Time()VBScriptの組み込み関数で、現在のシステム時刻を返す関数です。関数とはある処理をし、その結果が関数名を変数とみなして、その関数名に処理結果の値が代入されるプログラムの一種です。つまり、クライアントのブラウザでユーザがこのASPファイルをURLで指定すると、Webサーバ内のASPはこのASPファイルを起動し、07行目で、Time関数を呼び出し、Time()関数は現在のシステム時刻(Webサーバ内の時刻)を調べ、その時刻の値を変数Timeに代入します。VBScriptで<%=Time()%>と記述されているので、ASPはこの部分で、変数Timeの値をクライアントのブラウザに送信することになります。クライアントのブラウザは動的にWebページを表示します。つまり、"ただいまの時刻は"の文字列を表示した後、変数Timeの値を表示し、その次に"です<BR>"の文字列を表示します。

リスト2.8 time.asp

01 <%@ LANGUAGE="VBScript" %>
02 <HTML>
03 <HEAD>
04 <TITLE>time.asp</TITLE>
05 </HEAD>
06 <BODY>
07 ただいまの時刻は<%=Time()%>です<BR>
08 </BODY>
09 </HTML>

 このASPファイルにアクセスした結果は、図2.11のようになります。時刻は特に指定しなければ、図2.11のように"hh/mm/ss"形式で表示されます。ここで、"hh"は時、"mm"は分、"ss"は秒をおのおの示します。

【注意】

Time関数を使うときは、"()"を省略してTimeとだけ記述しても構いません。このときリスト2.8の07行目は、

07 ただいまの時刻は<%=Time%>です<BR>

と記述します。ただ、Timeが関数なのか、単なる変数なのかがわかりにくいので、ここでは関数には"()"を付加した形で記述することとします。

図2.11

■日付時刻関数

 時刻の表示を"hh時mm分ss秒"のように表示するには、リスト2.9のように記述します。Hour関数は、引数Time()のうちの時の部分(1〜24)の値を返す日付時刻関数の一つです。引数とは、関数に引き継ぐ値のことで、()の中に記述します。この例では引数そのものが、Time関数になっています。したがって、スクリプト<%=Hour(Time())%>の意味は、まずTime関数で、現在のシステムの時刻を調べ変数Timeに代入し、、次にHour関数で変数Timeの時刻の値のうちの時の部分を計算し、変数Hourに代入します。そして変数Hourの値をResponse.writeのショートカットである"="を記述することにより、クライアントのブラウザに送信します。ブラウザはその時の値をWebページに表示します。同様に、Minute関数は、引数Time()のうちの分の部分(0〜59)の値を返す日付時刻関数の一つです。Second関数は、引数Time()のうちの秒の部分(0〜59)の値を返す日付時刻関数の一つです。

リスト2.9 time2.asp

01 <%@ LANGUAGE="VBScript" %>
02 <HTML>
03 <HEAD>
04 <TITLE>time2.asp</TITLE>
05 </HEAD>
06 <BODY>
07 ただいまの時刻は<%=Hour(Time())%>時<%=Minute(Time())%>分<%=Second(Time())%>
08 秒です<BR>
09 </BODY>
10 </HTML>

 リスト2.9のASPファイルにアクセスした結果は、たとえば、図2.12のようになります。時刻の値は、実際にアクセスした時間により異なります。

図2.12

なお、リスト2.9は、文字列の結合演算子"&"を用いてリスト2.10のように記述しても同じ結果が得られます。

リスト2.10 time3.asp

01 <%@ LANGUAGE="VBScript" %>
02 <HTML>
03 <HEAD>
04 <TITLE>time3.asp</TITLE>
05 </HEAD>
06 <BODY>
07 ただいまの時刻は
08 <%=Hour(Time()) & "時" & Minute(Time()) & "分" & Second(Time()) & "秒"%>
09 です<BR>
10 </BODY>
11 </HTML>

【注意】

Response.Writeのショートカット"="を用いた場合、送信文字列の部分を2行以上にわたって記述できません。したがって、リスト2.11のように記述するとエラーになります。

リスト2.11 time4.asp

01 <%@ LANGUAGE="VBScript" %>
02 <HTML>
03 <HEAD>
04 <TITLE>time4.asp</TITLE>
05 </HEAD>
06 <BODY>
07 ただいまの時刻は
08 <%=Hour(Time()) & "時" & Minute(Time()) & "分" _
09 & Second(Time()) & "秒"%>
10 です<BR>
11 </BODY>
12 </HTML>

ただし、図2.12のリストの場合は、ショートカット"="の後の送信文字列が2行にわたって記述されていますが、正常に動作します。これは、エディタの画面では、7行目と8行目の2行にわたって表示されていますが、7行目の文字数がエディタの画面の1行の文字列よりも多いために、エディタの画面上では、8行目に自動折り返しして表示されたたけで、7行目と8行目の間にスクリプトとして復帰改行コードが挿入されているわけではないからです。

図2.13

 このよな紛らわしさを避けるために、エディタでの行数表示を自動折り返しも1行と計数する「ワープロ的」でなく、あくまで改行コードを1行と計数する「エディタ的」に設定しておくとよいでしょう。たとえば、秀丸では、「その他」メニューの「設定」で「詳細」タグを選択すると図2.14の画面が表示されるので、「エディタ的」をオンにしておきます。

図2.14

そうすると、図2.13のエディタ画面の行数表示は図2.15のように表示されます。

図2.15

ちなみに、リスト2.11のASPファイルにアクセスすると、図2.16に示すようなエラーメッセージがWebページに表示されます。このメッセージの第3行目の"/asp/2/time4.asp,行8""行8" は、"/asp/2/time4.asp"のファイルのエディタ的に計数した第8行目にエラーがあったことを示しています。したがって、デバッグを容易にするためにも、エディタでの行数表示は「エディタ的」にしておくといいでしょう。

図2.16

 


目次 前のページ 次のページ