Index |
HOME > プログラムTOP > JavaScript |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
日時を表示する
JavaScript の実用的なTips集です。ここでは、日時を取得してブラウザ上に表示する方法を扱います。JavaScriptでは、あらかじめ Dateオブジェクトが定義されていて、このオブジェクトを利用して日時を取得することができます。
sasaraan programming ![]() Exposition ■Dateオブジェクト
日時の取得や設定には Date オブジェクトを利用します。使う際は、"new" を使ってオブジェクトを生成します。これには、初期値の設定の違いにより、以下の3種類の方法があります。いずれも、後から異なる値に入れ直すことが可能です。ただし、下記の引数のうち、月の部分(m)のみ、0 から始まりますので注意が必要です
// JavaScript ソース
var dt1 = new Date(); // Date オブジェクトを生成
dt1.getFullYear(); // 年(四桁)の取得
dt1.setFullYear(2001); // 年(四桁)を2001年に設定
dt1.setMonth(0); // 月を1月に設定
dt1.setDate(15); // 日にちを15日に設定
■書式の指定
Date オブジェクトには、日時を文字列に変換して表示するメソッドが、あらかじめ用意されています。以下のサンプルは、すべて同じ日時を表したものです。ただし、OS、ブラウザ、及びこれらの設定によって出力される形式は異なります。
上記以外のフォーマットを行う場合は、別に関数を用意する必要があります。以下は曜日を含めて文字列として出力する例です。 // JavaScript ソース
function ShowDate() {
var aWeek = new Array("日","月","火","水","木","金","土"); // 週を表す文字列
var d1 = new Date(); // Date オブジェクト
var s1; // 表示文字列
s1 = d1.getFullYear() + "年" + (d1.getMonth()+1) + "月" + d1.getDate() + "日";
s1 += "(" + aWeek[d1.getDay()] + ") ";
s1 += d1.getHours() + "時" + d1.getMinutes() + "分" + d1.getSeconds() + "秒";
alert("只今の時刻 : " + s1);
}
<!-- HTML ソース -->
<form action="">
<input type="button" value="日時の表示" onclick="ShowDate()" >
</form>
■デジタル時計の表示
Dateオブジェクトとタイマーを利用して、デジタル時計を簡単に作成することができます。ここでは、form 要素及び text 要素の name 属性を利用してオブジェクトを特定した上で、時刻を表示しています。
// JavaScript ソース
var idTimer; // タイマーのID
// 時計表示の開始
function ClockStart() {
if (!idTimer) ShowClock();
}
// 時計の表示
function ShowClock() {
var dNow = new Date();
var sNow; // 表示する文字列
var sYear = dNow.getFullYear(); // 年
var sMonth = dNow.getMonth() + 1; // 月
var sDate = dNow.getDate(); // 日
var sHour = dNow.getHours(); // 時
var sMinute = dNow.getMinutes(); // 分
var sSecond = dNow.getSeconds(); // 秒
// 10以下の時は頭に"0"を挿入
if (sMonth < 10) sMonth = "0" + sMonth;
if (sDate < 10) sDate = "0" + sDate;
if (sHour < 10) sHour = "0" + sHour;
if (sMinute < 10) sMinute = "0" + sMinute;
if (sSecond < 10) sSecond = "0" + sSecond;
sNow = " "+sYear+"/"+sMonth+"/"+sDate+". "+sHour+":"+sMinute+":"+sSecond;
document.form1.text1.value = sNow;
idTimer = setTimeout("ShowClock()", 1000);
}
// 時計表示の中止
function ClockStop() {
if (idTimer) {
clearTimeout(idTimer);
idTimer = null;
}
document.form1.text1.value = "時計の表示";
}
<!-- HTML ソース -->
<form name="form1" action="">
<input type="text" name="text1" value="時計の表示" style="width:12em" >
<input type="button" value="スタート" onclick="ClockStart()" >
<input type="button" value="ストップ" onclick="ClockStop()" >
</form>
表示を input 以外の要素にしたり、スクリプトを別ファイルに置きたい場合はDOMを利用します(IE5/NN6以上)。この場合、表示する要素には id 属性を設定する必要があります。スクリプト側では id をもとに getElementById メソッドを使用してオブジェクトを特定します。 // JavaScript ソース
var idTimer;
var objClock;
var node1;
function ClockStart(id) {
if (!idTimer) {
objClock = document.getElementById(id);
ShowClock(id);
}
}
function ShowClock() {
var dNow = new Date();
if (node1) objClock.removeChild(node1);
node1 = document.createTextNode(dNow.toLocaleTimeString());
objClock.appendChild(node1);
idTimer = setTimeout("ShowClock()", 1000);
}
function ClockStop() {
if (idTimer) {
clearTimeout(idTimer);
idTimer = null;
}
if (node1) {
objClock.removeChild(node1);
node1 = null;
}
}
<!-- HTML ソース -->
<form action="" style='margin:1ex'>
<div id="disp1" style="float:left; width:10em; color:white; background-color:black;
text-align:center;"></div>
<input type="button" value="スタート" onclick="ClockStart('disp1')" >
<input type="button" value="ストップ" onclick="ClockStop()" >
</form>
■最終更新日の表示
document オブジェクトの lastModified プロパティで、最終更新日を取得することができます。これは、該当ファイルの最終更新日の値です。ただし、この値は、OS、ブラウザ、設定によって表示の形式が異なります。表示形式を統一させるためには、フォーマットが必要です。
また、Webサーバーによっては動作しないことがあります。使用する際は動作確認が必要です。また、古いブラウザ(IE4, NN3)でも動作しないことがあるようです。 // JavaScript ソース
function ShowLastModified() {
var dt = new Date(document.lastModified);
var str = dt.getFullYear() + "年" + (dt.getMonth()+1) +"月" + dt.getDate() + "日";
document.form1.text1.value = str;
}
<!-- HTML ソース -->
<form name='form1' action="" style='margin-left:1em'>
最終更新日 : <input type='text' name='text1' value='' style='width:9em;'>
</form>
■日時の計算
日時同士を足したり引いたりして、値を算出することができます。ただし、ミリ秒単位となるため、日数や時間を算出する時は別途計算する必要があります。
// JavaScript ソース
function CountToNewYear() {
var dt1 = new Date(); // 現在の日時
var dt2 = new Date(dt1.getFullYear()+1,0,1); // 翌年の一月一日
var dt3 = dt2 - dt1; // 両者の差(ミリ秒)
var dt4 = Math.ceil(dt3 / (1000*60*60)); // 差を時間数に変換(小数点切り上げ)
var dt5 = dt4 % 24; // 1日に満たない部分の時間数
var dt6 = (dt4 - dt5) / 24; // 日数
alert("来年のお正月まであと " + dt6 + "日と" + dt5 +"時間");
}
<!-- HTML ソース -->
<form action="" style="margin:1ex">
<input type="button" value="計算結果" onclick="CountToNewYear()" >
</form>
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
www.sasaraan.net |
(c) morijoh |