このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0507

日付ヘルパー

 日付ヘルパーは「 system/helper/date_helper.php 」ファイルで、 日付や時刻の表記を操作する関数が定義されています。

日付ヘルパーのロード

 「 CI_Loader 」クラスの「 helper() 」メソッドでロードします。

    $this->load->helper('date');

設定

 日付ヘルパーの関数で、デフォルトで利用される現在時刻は、 「application/config/config.php」設定ファイルの「$config['time_reference']」設定値により、 ローカル時間、または、グリニッジ標準時を基準とすることができます。

  • application/config/config.php
    • ローカル時間を基準にする
    $config['time_reference'] = 'local';
    • グリニッジ標準時を基準にする
    $config['time_reference'] = 'gmt';

日付ヘルパーの関数

now()

 現在の日時をUnixタイムスタンプで返しますが、「application/config/config.php」設定ファイルの 「$config['time_reference']」設定値が「'gmt'」の場合は、ローカル時刻ではなくグリニッジ標準時での
日時を返します。

    $this->config->set_item('time_reference', 'local');

    echo now();
    // 1493551016

    $this->config->set_item('time_reference', 'gmt');

    echo now();
    // 1493518616

mdate($datestr = '', $time = '')

 第一引数に指定された日付フォーマット文字列に従って、日付や時刻を生成して返します。
 PHPの「date()」関数との違いは、日付フォーマット文字に「%」を付けて指定します。

第二引数に、Unixタイムスタンプを指定するとその日時でフォーマットした文字列を返します。 指定しなかった場合は、現在の日時でフォーマットした文字列を返します。
 ( 「application/config/config.php」設定ファイルの「$config['time_reference']」設定値が「'gmt'」
の場合、グリニッジ標準時が基準となります。)

    echo mdate('%Y年%m月%d日 %H時%i分%s秒');
    // 2017年04月30日 20時16分56秒

    echo date('Y年m月d日 H時i分s秒');
    // 2017年04月30日 20時16分56秒

    $this->config->set_item('time_reference', 'gmt');

    echo mdate('%Y年%m月%d日 %H時%i分%s秒');
    // 2017年04月30日 11時16分56秒
*注:
    「application/config/config.php」設定ファイルの「$config['time_reference']=」が「'gmt'」の場合でも、 「%O」、及び、「%P」がローカルの日時が基準となってしまうバグがあります。

standard_date($fmt = 'DATE_RFC822', $time = '')

 下記に示す9種のフォーマットを選択して日時を示す文字列を返します。
 第二引数には、Unixタイムスタンプが指定できますが、指定しなかった場合は現在の日時から文字列が生成されます。
 ( 「application/config/config.php」設定ファイルの「$config['time_reference']」設定値が「'gmt'」
の場合、グリニッジ標準時が基準となります。)

フォーマット名 フォーマット文字列
DATE_ATOM %Y-%m-%dT%H:%i:%s%Q
DATE_COOKIE %l, %d-%M-%y %H:%i:%s UTC
DATE_ISO8601 %Y-%m-%dT%H:%i:%s%Q
DATE_RFC822 %D, %d %M %y %H:%i:%s %O
DATE_RFC850 %l, %d-%M-%y %H:%i:%s UTC
DATE_RFC1036 %D, %d %M %y %H:%i:%s %O
DATE_RFC1123 %D, %d %M %Y %H:%i:%s %O
DATE_RSS %D, %d %M %Y %H:%i:%s %O
DATE_W3C %Y-%m-%dT%H:%i:%s%Q
*注:
    「DATE_ATOM」「DATE_ISO8601」「DATE_W3C」のフォーマット文字列はCodeIgniterのバグです。
    正しいフォーマット文字列は「%Q」が「%P」となります。

    echo standard_date('DATE_ATOM');
    // 2017-04-30T20:16:56Q
    // 2017-04-30T20:16:56+09:00 バグ修正版

    echo standard_date('DATE_COOKIE');
    // Sunday, 30-Apr-17 20:16:56 UTC

    echo standard_date('DATE_ISO8601');
    // 2017-04-30T20:16:56Q
    // 2017-04-30T20:16:56+0900 バグ修正版

    echo standard_date('DATE_RFC822');
    // Sun, 30 Apr 17 20:16:56 +0900

    echo standard_date('DATE_RFC850');
    // Sunday, 30-Apr-17 20:16:56 UTC

    echo standard_date('DATE_RFC1036');
    // Sun, 30 Apr 17 20:16:56 +0900

    echo standard_date('DATE_RFC1123');
    // Sun, 30 Apr 2017 20:16:56 +0900

    echo standard_date('DATE_RSS');
    // Sun, 30 Apr 2017 20:16:56 +0900

    echo standard_date('DATE_W3C');
    // 2017-04-30T20:16:56Q
    // 2017-04-30T20:16:56+09:00 バグ修正版

    $config['time_reference'] = 'gmt';
    echo standard_date('DATE_RFC822');
    // Sun, 30 Apr 17 11:16:56 +0900

*注:
    「application/config/config.php」設定ファイルの「$config['time_reference']=」が「'gmt'」の場合でも、 「%O」、及び、「%P」がローカルの日時が基準となってしまうバグがあります。

timespan($seconds = 1, $time = '')

 第一引数で指定した日時(Unixタイムスタンプ)から、現在(ローカル)日時、または、 第二引数で指定した日時(Unixタイムスタンプ)までの経過時間を下記のフォーマットの文字列で返します。

    10 Years, 6 Months, 1 Weeks, 9 Days, 20 Hours, 8 Minutes
*注:
     この関数はバグがあり、30日以上の経過時間を正しく返しません。
    echo timespan(1491371303);
    // 3 Weeks, 4 Days, 5 Hours, 28 Minutes

days_in_month($month = 0, $year = '')

 指定した月の一カ月の日数を返します。

 第一引数には「1」から「12」で月を指定します。

 第二引数には、年を指定します。指定しない場合は、現在の年が利用されます。

    echo days_in_month(2, 2012);
    // 29

local_to_gmt($time = '')

 ローカル時間のUnixタイムスタンプをグリニッジ標準時のUnixタイムスタンプに変換して返します。
引数を指定しなかった場合は、現在のローカル時間が利用されます。

    echo local_to_gmt();
    // 1493518616

gmt_to_local($time = '', $timezone = 'UTC', $dst = FALSE)

 第一引数で指定したグリニッジ標準時のUnixタイムスタンプを第二引数で指定した タイムゾーン日時のUnixタイムスタンプに変換して返します。

 第三引数に、TRUEを指定すると夏時間として計算します。(+1時間)

 第一引数を空文字で指定すると、「now()」関数で取得できるUnixタイムスタンプが利用されます。

 第二引数を指定しない場合は、UTC(+0時間)、つまり、変換されずに第一引数の値が返されます。
 (第三引数にTRUEを指定していれば 1時間 加算されます。)

    echo gmt_to_local(1493518616, 'UP9');
    // 1493551016

mysql_to_unix($time = '')

 MySQLの「DATETIME」型フォーマットの文字列をUnixタイムスタンプに変換して返します。

    echo mysql_to_unix('2012-07-01 08:30:00');
    // 1341099000

unix_to_human($time = '', $seconds = FALSE, $fmt = 'us')

 Unixタイムスタンプを人が読みやすい文字列に変換して返します。

 第一引数にはUnixタイムスタンプを指定します。

 第二引数には、「秒」を含めるか、TRUE、または、FALSE で指定します。 デフォルトでは、「秒」を含めません。

 第三引数に、「us」を指定すると時間を12時間表記で表わし、末尾に「AM」、「PM」を付加します。
 「us」以外の文字列を指定すると時間を24時間表記で表わし、末尾に「AM」、「PM」を付加しません。

    echo unix_to_human(time());
    // 2017-04-30 08:16 PM

    echo unix_to_human(time(), TRUE);
    // 2017-04-30 08:16:56 PM

    echo unix_to_human(time(), FLASE, 'eu');
    // 2017-04-30 20:16

human_to_unix($datestr = '')

 「unix_to_human()」関数で返されるフォーマットの日時を表わす文字列をUnixタイムスタンプに変換して返します。

    echo human_to_unix('2012-07-01 23:55:00');
    // 1341154500

timezone_menu($default = 'UTC', $class = "", $name = 'timezones')

    echo timezone_menu();
    // <select name="timezones">
    // <option value='UM12'>省略・・・
    // 省略・・・
    // %lt;option value="UTC" selected='selected'>省略・・・

    echo timezone_menu('UP9');
    // <select name="timezones">
    // <option value='UM12'>省略・・・
    // 省略・・・
    // %lt;option value="UP9" selected='selected'>省略・・・

    /* CSS for select box 'timezones' */
    select.tz_css {
      background-color: #66ff66;
    }
    echo timezone_menu('UP9', 'tz_css');
    // <select class="tz_css" name="timezones">
    // <option value='UM12'>省略・・・
    // 省略・・・
    // %lt;option value="UP9" selected='selected'>省略・・・

    echo timezone_menu('UM4', '', 'select_name');
    // <select name="select_name">
    // <option value='UM12'>省略・・・
    // 省略・・・
    // %lt;option value="UM4" selected='selected'>省略・・・

timezones($tz = '')

 下記に示すタイムゾーンの情報を返します。
 引数を指定せずに実行すると、タイムゾーン情報を連想配列で返します。
 また、 引数にタイムゾーン連想配列の添え字(インデックスキー)を指定すると標準時からの時差を返します。

    array(
        'UM12'   => -12,
        'UM11'   => -11,
        'UM10'   => -10,
        'UM95'   => -9.5,
        'UM9'    => -9,
        'UM8'    => -8,
        'UM7'    => -7,
        'UM6'    => -6,
        'UM5'    => -5,
        'UM45'   => -4.5,
        'UM4'    => -4,
        'UM35'   => -3.5,
        'UM3'    => -3,
        'UM2'    => -2,
        'UM1'    => -1,
        'UTC'    => 0,
        'UP1'    => +1,
        'UP2'    => +2,
        'UP3'    => +3,
        'UP35'   => +3.5,
        'UP4'    => +4,
        'UP45'   => +4.5,
        'UP5'    => +5,
        'UP55'   => +5.5,
        'UP575'  => +5.75,
        'UP6'    => +6,
        'UP65'   => +6.5,
        'UP7'    => +7,
        'UP8'    => +8,
        'UP875'  => +8.75,
        'UP9'    => +9,
        'UP95'   => +9.5,
        'UP10'   => +10,
        'UP105'  => +10.5,
        'UP11'   => +11,
        'UP115'  => +11.5,
        'UP12'   => +12,
        'UP1275' => +12.75,
        'UP13'   => +13,
        'UP14'   => +14
    );
                            
    $timezone = timezones();
    var_dump($timezone);
    /*
    array(40) {
        ["UM12"]=>
        int(-12)
        ["UM11"]=>
        int(-11)
        : 省略
        ["UP13"]=>
        int(13)
        ["UP14"]=>
        int(14)
    }
    */
                            

    $utc = timezones('UTC');
    echo $utc;
    // 0