日付ヘルパー
日付ヘルパーは「 system/helper/date_helper.php 」ファイルで、 日付や時刻の表記を操作する関数が定義されています。
日付ヘルパーのロード
「 CI_Loader 」クラスの「 helper() 」メソッドでロードします。
設定
日付ヘルパーの関数で、デフォルトで利用される現在時刻は、 「application/config/config.php」設定ファイルの「$config['time_reference']」設定値により、 ローカル時間、または、グリニッジ標準時を基準とすることができます。
- application/config/config.php
- ローカル時間を基準にする
- グリニッジ標準時を基準にする
日付ヘルパーの関数
now()
現在の日時をUnixタイムスタンプで返しますが、「application/config/config.php」設定ファイルの
「$config['time_reference']」設定値が「'gmt'」の場合は、ローカル時刻ではなくグリニッジ標準時での
日時を返します。
echo now();
// 1762137079
$this->config->set_item('time_reference', 'gmt');
echo now();
// 1762104679
mdate($datestr = '', $time = '')
第一引数に指定された日付フォーマット文字列に従って、日付や時刻を生成して返します。
PHPの「date()」関数との違いは、日付フォーマット文字に「%」を付けて指定します。
第二引数に、Unixタイムスタンプを指定するとその日時でフォーマットした文字列を返します。
指定しなかった場合は、現在の日時でフォーマットした文字列を返します。
( 「application/config/config.php」設定ファイルの「$config['time_reference']」設定値が「'gmt'」
の場合、グリニッジ標準時が基準となります。)
// 2025年11月03日 11時31分19秒
echo date('Y年m月d日 H時i分s秒');
// 2025年11月03日 11時31分19秒
$this->config->set_item('time_reference', 'gmt');
echo mdate('%Y年%m月%d日 %H時%i分%s秒');
// 2025年11月03日 02時31分19秒
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 |
正しいフォーマット文字列は「%Q」が「%P」となります。
// 2025-11-03T11:31:19Q
// 2025-11-03T11:31:19+09:00 バグ修正版
echo standard_date('DATE_COOKIE');
// Monday, 03-Nov-25 11:31:19 UTC
echo standard_date('DATE_ISO8601');
// 2025-11-03T11:31:19Q
// 2025-11-03T11:31:19+0900 バグ修正版
echo standard_date('DATE_RFC822');
// Mon, 03 Nov 25 11:31:19 +0900
echo standard_date('DATE_RFC850');
// Monday, 03-Nov-25 11:31:19 UTC
echo standard_date('DATE_RFC1036');
// Mon, 03 Nov 25 11:31:19 +0900
echo standard_date('DATE_RFC1123');
// Mon, 03 Nov 2025 11:31:19 +0900
echo standard_date('DATE_RSS');
// Mon, 03 Nov 2025 11:31:19 +0900
echo standard_date('DATE_W3C');
// 2025-11-03T11:31:19Q
// 2025-11-03T11:31:19+09:00 バグ修正版
$config['time_reference'] = 'gmt';
echo standard_date('DATE_RFC822');
// Mon, 03 Nov 25 02:31:19 +0900
timespan($seconds = 1, $time = '')
第一引数で指定した日時(Unixタイムスタンプ)から、現在(ローカル)日時、または、 第二引数で指定した日時(Unixタイムスタンプ)までの経過時間を下記のフォーマットの文字列で返します。
// 3 Weeks, 4 Days, 5 Hours, 28 Minutes
days_in_month($month = 0, $year = '')
指定した月の一カ月の日数を返します。
第一引数には「1」から「12」で月を指定します。
第二引数には、年を指定します。指定しない場合は、現在の年が利用されます。
// 29
local_to_gmt($time = '')
ローカル時間のUnixタイムスタンプをグリニッジ標準時のUnixタイムスタンプに変換して返します。
引数を指定しなかった場合は、現在のローカル時間が利用されます。
// 1762104679
gmt_to_local($time = '', $timezone = 'UTC', $dst = FALSE)
第一引数で指定したグリニッジ標準時のUnixタイムスタンプを第二引数で指定した タイムゾーン日時のUnixタイムスタンプに変換して返します。
第三引数に、TRUEを指定すると夏時間として計算します。(+1時間)
第一引数を空文字で指定すると、「now()」関数で取得できるUnixタイムスタンプが利用されます。
第二引数を指定しない場合は、UTC(+0時間)、つまり、変換されずに第一引数の値が返されます。
(第三引数にTRUEを指定していれば 1時間 加算されます。)
// 1762137079
mysql_to_unix($time = '')
MySQLの「DATETIME」型フォーマットの文字列をUnixタイムスタンプに変換して返します。
// 1341099000
unix_to_human($time = '', $seconds = FALSE, $fmt = 'us')
Unixタイムスタンプを人が読みやすい文字列に変換して返します。
第一引数にはUnixタイムスタンプを指定します。
第二引数には、「秒」を含めるか、TRUE、または、FALSE で指定します。 デフォルトでは、「秒」を含めません。
第三引数に、「us」を指定すると時間を12時間表記で表わし、末尾に「AM」、「PM」を付加します。
「us」以外の文字列を指定すると時間を24時間表記で表わし、末尾に「AM」、「PM」を付加しません。
// 2025-11-03 11:31 AM
echo unix_to_human(time(), TRUE);
// 2025-11-03 11:31:19 AM
echo unix_to_human(time(), FLASE, 'eu');
// 2025-11-03 11:31
human_to_unix($datestr = '')
「unix_to_human()」関数で返されるフォーマットの日時を表わす文字列をUnixタイムスタンプに変換して返します。
// 1341154500
timezone_menu($default = 'UTC', $class = "", $name = 'timezones')
// <select name="timezones">
// <option value='UM12'>省略・・・
// 省略・・・
// %lt;option value="UTC" selected='selected'>省略・・・
// <select name="timezones">
// <option value='UM12'>省略・・・
// 省略・・・
// %lt;option value="UP9" selected='selected'>省略・・・
select.tz_css {
background-color: #66ff66;
}
// <select class="tz_css" name="timezones">
// <option value='UM12'>省略・・・
// 省略・・・
// %lt;option value="UP9" selected='selected'>省略・・・
// <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
);
var_dump($timezone);
/*
array(40) {
["UM12"]=>
int(-12)
["UM11"]=>
int(-11)
: 省略
["UP13"]=>
int(13)
["UP14"]=>
int(14)
}
*/
$utc = timezones('UTC');
echo $utc;
// 0