現在時刻の表示
現在時刻の表示
現在時刻を表示するスクリプトはとっても簡単。1行で済んじゃいます。
<?php
echo date("Y/m/d g:i");
?>
出力結果
時刻の表示にはPHPにあらかじめ用意されているdate関数を使います。date関数はローカルPCの日付・時刻をフォーマット文字列で整形して表示する関数です。上のサンプルだとY,m,d,g,iがフォーマット文字列です。
書式
- string date( string format [, int timestamp ] )
参考関数
date()---- 日付・時刻を書式化する
| Y | 年を4桁で表示(西暦) |
| m | 月を2桁で表示 |
| d | 日付を2桁で表示 |
| g | 時を先頭に0を付けない12時間単位の数字で表示 |
| i | 分を2桁で表示 |
この他のフォーマット文字列もたくさんありますので日付・時刻関数のフォーマット文字列一覧でご覧下さい。
ローカルというのはJavaScriptなんかと違いページを見ている人のPCの事ではありません。PHPが動いてるPCって事です。つまり、サーバマシンですね。
整形????と思われた方のためにちょいと説明を加えておきます。PHP内部では日付や時刻はタイムスタンプという形式で処理されます。タイムスタンプとは「1970年1月1日 00:00:00」からの通算秒数です。えっらい数になりますねぇ(笑)
このタイムスタンプですがいくらPHP内部でその形式が使われてるからって、そのまま表示されてもとっても理解に苦しみます。現在時刻を知るのにタイムスタンプから計算するなんて本末転倒( ̄▽ ̄||||) そこで、タイムスタンプを勝手に計算してなおかつ分かりやすく整形してくれる関数がdate関数です。
関数の中に入ってるのはフォーマット文字列と普通の文字列です。フォーマット文字列ってのが整形するための文字列で、どのように整形するかが各文字によって決まってます。このフォーマット文字列以外は普通の文字列として処理され、そのまま表示されます。もし、フォーマット文字列として定義されている文字列をそのまま表示したければエスケープ処理をする必要があります。
フォーマット文字と普通の文字
<?php
// 文字列のアルファベットのところはすべてフォーマット文字列です
print "今日は".date("Y年n月j日")." 時刻は".date("G時i分s秒")."です。";
?>
出力結果
| n | 月を先頭に0を付けないで表示 |
| j | 日付を先頭に0を付けないで表示 |
| G | 時を先頭に0を付けない24時間単位の数字で表示 |
| s | 秒を2桁で表示 |
上のサンプルに使ったフォーマット文字列は省略してます。
フォーマット文字のエスケープ処理
<?php
echo date("\I\t'\s l").",today";
/* I,t,sともにフォーマット文字列として定義されていますのでエスケープ処理します。tは普通に\tとすると「タブ」の意味になってしまうので2重にエスケープしています。*/
?>
出力結果
| l | 曜日をフルネームのテキストで表示(Sunday,Fridayなど) |
今回使用しているフォーマット文字は1個だけです。
おまけのJavaScript版
PHPはサーバサイドスクリプトですのでページを見ている人個々のPCの設定時刻を表示する事はできません。表示するのはあくまでもサーバPCの設定時刻です。ページを見ている人のPCの時刻を表示したい場合はJavaScriptを使います。
一応JavaScriptだとどー書くかのサンプルなんぞ載せておきますので良かったら参考にして下さい。ちなみに、ソースの解説は省かせてもらいますm(__)m
現在時刻の表示―JavaScript版<script language="JavaScript" type="text/javascript">
<!--
today = new Date();
Y = today.getFullYear();
M = today.getMonth() + 1;
D = today.getDate();
H = today.getHours();
T = today.getMinutes();
document.write(Y + "年" + M + "月" + D + "日 " + H + "時" + T + "分");
// -->
</script>
出力結果
※出力結果をご覧になるにはJavaScriptがONになっている必要があります。