デジタル表示の時計 3
少し間が空いてしまいましたが、デジタル表示の時計をさらに改造してみました。今まで 24時までで 表示していたのを AM / PM の表示を付けて、12時までで表示するようにしてみます。前回までにできているプログラムを基にして、
AM / PM を表示する処理を追加するようにします。
AM / PM を表示する処理を追加するようにします。
Sample.1
function clock() {
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();
if (h < 12) {
var ampm = "AM ";
}else {
h -= 12;
var ampm = 'PM';
}
if (h < 10) {
h = "0" + h;
}
if (m < 10) {
m = "0" + m;
}
if( s < 10) {
s = "0" + s;
}
document.getElementById('clockArea').innerHTML = ampm + h + ":" + m + ":" + s;
}
setInterval('clock()',1000);
赤字の部分が 前回のコードに追加した部分です。
変数 h に 「時」「分」「秒」の 「時」が代入されていますから、h の値が 0~11 のときには、AM か PM を代入するための変数 ampm に AM を代入して、h の値が それ以外のとき(12~23)には PM を代入して、表示させる 値の先頭に + 演算子で連結させて表示する…。と これだけでいいのですが、少し気になる箇所もあります。
Sample.1の実行結果 |
Sample.1 を実行して 時刻が お昼の 12時を過ぎると 上の画像のようになります。別に間違ってはいませんが、PM 12:41:37 という方が お昼の感じがするのは自分だけでしょうか?もし そのように表示させたいのなら if 文 での条件分岐を 3つにして次のように処理を分ける必要があります。
- h の値が 0~11 ampm に AM を代入。
- h の値が 12 ampm に PM を代入。
- h の値が 13~23 ampmに PM を代入して、h から 12を引く。
ためしに練習と思ってやってみます。
Sample.2
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();
if (h == 12) {
var ampm = "PM ";
}else if (h < 12) {
var ampm = "AM ";
}else {
h -= 12;
var ampm = 'PM';
}
if (h < 10) {
h = "0" + h;
}
if (m < 10) {
m = "0" + m;
}
if( s < 10) {
s = "0" + s;
}
document.getElementById('clockArea').innerHTML = ampm + h + ":" + m + ":" + s;
}
setInterval('clock()',1000);
Sample.2 の実行結果 |
if 文で 2つに条件分岐させていたのを if ~ else if 文で 3つに条件分岐させて処理を分けています。処理の内容は 先に箇条書きにした通りです。
これで ようやく デジタル表示の時計は完成でいいと思います。そのうちに アナログ風の表示の時計にも挑戦してみたいですが、その前に CSS3 の練習などもしてみたいです。
0 件のコメント:
コメントを投稿