現在時刻の表示
そふぃのPHP入門 >> サンプルスクリプト >> 日付・時刻関連 >> 現在時刻の表示

現在時刻の表示

現在時刻の表示

現在時刻を表示するスクリプトはとっても簡単。1行で済んじゃいます。

  1. <?php
  2. echo date("Y/m/d g:i");
  3. ?>

出力結果

2017/08/17 8:27

時刻の表示にはPHPにあらかじめ用意されているdate()関数を使います。date()関数は日付・時刻をフォーマット文字で整形して表示する関数です。上のサンプルだとY,m,d,g,iがフォーマット文字です。

参考関数

  • date() ---- 日付・時刻を書式化する

使用方法は第1引数にフォーマット形式を、第2引数にタイムスタンプを指定します。第2引数のタイムスタンプは省略でき、省略した場合は現在時刻が適用されます。

書式

  • string date( string format [, int timestamp ] )
使用したフォーマット文字列
Y 年を4桁で表示(西暦)
m 月を2桁で表示
d 日付を2桁で表示
g 時を先頭に0を付けない12時間単位の数字で表示
i 分を2桁で表示

この他のフォーマット文字列もたくさんありますので日付・時刻関数のフォーマット文字一覧でご覧下さい。

整形????と思われた方のために説明を加えておきます。PHP内部では日付や時刻はタイムスタンプという形式で処理されます。タイムスタンプとは「1970年1月1日 00:00:00」からの通算秒数です。えらい数になりますねぇ・・・・・w。

このタイムスタンプですがいくらPHP内部でその形式が使われてるからって、そのまま表示されてもとっても理解に苦しみます。現在時刻を知るのにタ イムスタンプから計算するなんて本末転倒・・・・・・・;; そこで、タイムスタンプを勝手に計算してなおかつ分かりやすく整形してくれる関数がdate()関数です。

関数に指定しているのはフォーマット文字と普通の文字列です。フォーマット文字というのが整形するための文字列で、どのように整形するかが各文字によって決まってます。このフォーマット文字以外は普通の文字列として処理され、そのまま表示されます。もし、フォーマット文字として定義されている文字列をそのまま表示したければエスケープ処理をする必要があります。

フォーマット文字と普通の文字

  1. <?php
  2. // 文字列のアルファベットのところはすべてフォーマット文字列です
  3. print "今日は".date("Y年n月j日")." 時刻は".date("G時i分s秒")."です。";
  4. ?>

出力結果

今日は2017年8月17日 時刻は20時27分14秒です。
使用したフォーマット文字列
n 月を先頭に0を付けないで表示
j 日付を先頭に0を付けないで表示
G 時を先頭に0を付けない24時間単位の数字で表示
s 秒を2桁で表示

最初のサンプルに使ったフォーマット文字は省略してます。

フォーマット文字のエスケープ処理

  1. <?php
  2. echo date("\I\t'\s l").",today";
  3. /* I,t,sともにフォーマット文字列として定義されていますのでエスケープ処理します。tは普通に\tとすると「タブ」の意味になってしまうので2重にエスケープしています。*/
  4. ?>

出力結果

I 's Thursday,today
使用したフォーマット文字列
l 曜日をフルネームのテキストで表示(Sunday,Fridayなど)

今回使用しているフォーマット文字は1個だけです。

JavaScriptとどう違う?

JavaScriptでも現在時刻の表示ができますが、JavascriptとPHPでは一体何が違うのでしょう。

PHPはサーバサイドスクリプトですので、取得できる時刻はサーバマシンの設定時刻です。対してJavaScriptはクライアントサイドのスクリプトですので取得できる時刻はページを見ている人のPC内部の設定時刻です。

普通のサーバは時刻をきっちり合わせていると思いますので、一般的にはサーバマシンの時刻の方が信用できます。JavaScriptを使用して取得した時刻だと、ページを開いた人のPC内部の時計が狂っていれば当然取得できる時刻も狂ってしまいます。

PHPとJavaScritptどちらがいい、という問題ではなく、実装したい目的によってどちらが適切かを判断する必要がありますね。

一応JavaScriptだとどう書くかのサンプルなんぞ載せておきますので良かったら参考にして下さい。ご自分のパソコンの時計をわざと違う日時に設定してからPHP版と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になっている必要があります。