日付,時刻

PHP では様々な形式に編集して日付や時刻を表示出来るのですが、その一部を紹介します。

プログラムの作成-1

Date.php のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
    date_default_timezone_set("Asia/Tokyo"); 
    echo date("Y/m/d  H:i:s") . "\r\n";
    echo date("y/m/d  h:i:s");
?>

【実行画面】
コマンドプロンプトを起動して Date.php をコンパイルします。
コマンドのタイプは大文字でも小文字でも構いません。
Date.php の実効結果です。
C:\Windows\System32>cd \data\php
C:\DATA\PHP>php date.php
2015/03/29  13:49:27
15/03/29  01:49:27
C:\DATA\PHP>

プログラムの説明

  1. date_default_timezone_set("Asia/Tokyo"); でタイムゾーンを日本(東京)に設定しています。
    date() が日付,時刻を取得する関数で、第一パラメータに編集方法を指定します。
    Y: 西暦を4桁で表示します。
    y: 西暦を下2桁で表示します。
    H: 時間を24時間形式で表示します。
    h: 時間を12時間形式で表示します。
  2. 「. "\r\n";」の「.」は文字列の連結演算子で、「\r\n」は復帰/改行です。
  3. date_default_timezone_set("Asia/Tokyo"); の行を削除して実行すると世界標準時になります。
    Warning: が出ているのですが、東京とは9時間の時差で正常に印字されています。
    以前はグリニッジ標準時(GMT)と言ったのですが、最近は協定世界時(UTC)と呼ぶようです。
    C:\DATA\PHP>php date.php
    
    Warning: date(): It is not safe to rely on the system's timezone settings. You a
    re *required* to use the date.timezone setting or the date_default_timezone_set(
    ) function. In case you used any of those methods and you are still getting this
     warning, you most likely misspelled the timezone identifier. We selected the ti
    mezone 'UTC' for now, but please set date.timezone to select your timezone. in C
    :\DATA\PHP\date.php on line 3
    2015/03/29  05:01:03
    

プログラムの作成-2

年月日, 時分秒 で編集して印字してみました。
<?php
    date_default_timezone_set("Asia/Tokyo"); 
    echo date("Y年m月d日  H時i分s秒") . "\r\n";
?>

【実行画面】
何故か「年」が文字化けしています。
C:\DATA\PHP>php date.php
2015・03月29日  14時09分50秒

プログラムの説明

  1. date.php の実行結果をリダイレクトしてバイナリエディッタで確認してみました。
    32303135 94373033  8C8E3239 93FA2020    2015・03月29日
    31348E9E 313595AA  35389562 0D0A        14時09分50秒..
    
  2. 「年月日」は「944E 8C8E 93FA」なのですが、確かに文字化けしています。
    文字化けの原因は不明で、私のパソコンだけなのでしょうか?
  3. 同じプログラムを UT8 のコードで格納して実行してみます。
    リダイレクトして UT8 が表示できるエディッタで確認すると正しく印字されていました。
    2015年03月29日  14時31分19秒
    
    PHP で UT8 を使う方法は PHP utf-8 を参照して下さい。
    東京電力の原発事故では無いのですが、得てして想定外のことが起こるものですね。
    東京電力と違って、こちらの想定外は周りに被害はないようです。 (^_^;)

プログラムの作成-3

タイムスタンプを記録するだけなら time() 関数がお勧めです。
<?php
    $tim= time();
    echo "$tim \r\n";
    echo gmdate("Y/m/d  H:i:s", $tim+9*3600);
?>

【実行画面】
C:\DATA\PHP>php time.php
1431647044
2015/05/15  08:44:04
C:\DATA\PHP>

プログラムの説明

  1. タイムスタンプを記録するだけなら time() 関数がお勧めです。
    time()関数は、現在時刻を 1970年1月1日 00:00:00 GMT からの通算秒として返します。
        $tim= time();
        echo "$tim \r\n";
    
  2. 記録したタイムスタンプを年/月/日に編集して印字してみました。
    $tim+9*3600 は日本時間(GMT から9時間のずれ)に変換しています。
        echo gmdate("Y/m/d  H:i:s", $tim+9*3600);
    

前田稔の超初心者のプログラム入門
PHP Program