日付ヘルパー
日付ヘルパーは「 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();
// 1732403556
$this->config->set_item('time_reference', 'gmt');
echo now();
// 1732371156
mdate($datestr = '', $time = '')
第一引数に指定された日付フォーマット文字列に従って、日付や時刻を生成して返します。
PHPの「date()」関数との違いは、日付フォーマット文字に「%」を付けて指定します。
第二引数に、Unixタイムスタンプを指定するとその日時でフォーマットした文字列を返します。
指定しなかった場合は、現在の日時でフォーマットした文字列を返します。
( 「application/config/config.php」設定ファイルの「$config['time_reference']」設定値が「'gmt'」
の場合、グリニッジ標準時が基準となります。)
// 2024年11月24日 08時12分36秒
echo date('Y年m月d日 H時i分s秒');
// 2024年11月24日 08時12分36秒
$this->config->set_item('time_reference', 'gmt');
echo mdate('%Y年%m月%d日 %H時%i分%s秒');
// 2024年11月23日 23時12分36秒
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」となります。
// 2024-11-24T08:12:36Q
// 2024-11-24T08:12:36+09:00 バグ修正版
echo standard_date('DATE_COOKIE');
// Sunday, 24-Nov-24 08:12:36 UTC
echo standard_date('DATE_ISO8601');
// 2024-11-24T08:12:36Q
// 2024-11-24T08:12:36+0900 バグ修正版
echo standard_date('DATE_RFC822');
// Sun, 24 Nov 24 08:12:36 +0900
echo standard_date('DATE_RFC850');
// Sunday, 24-Nov-24 08:12:36 UTC
echo standard_date('DATE_RFC1036');
// Sun, 24 Nov 24 08:12:36 +0900
echo standard_date('DATE_RFC1123');
// Sun, 24 Nov 2024 08:12:36 +0900
echo standard_date('DATE_RSS');
// Sun, 24 Nov 2024 08:12:36 +0900
echo standard_date('DATE_W3C');
// 2024-11-24T08:12:36Q
// 2024-11-24T08:12:36+09:00 バグ修正版
$config['time_reference'] = 'gmt';
echo standard_date('DATE_RFC822');
// Sat, 23 Nov 24 23:12:36 +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タイムスタンプに変換して返します。
引数を指定しなかった場合は、現在のローカル時間が利用されます。
// 1732371156
gmt_to_local($time = '', $timezone = 'UTC', $dst = FALSE)
第一引数で指定したグリニッジ標準時のUnixタイムスタンプを第二引数で指定した タイムゾーン日時のUnixタイムスタンプに変換して返します。
第三引数に、TRUEを指定すると夏時間として計算します。(+1時間)
第一引数を空文字で指定すると、「now()」関数で取得できるUnixタイムスタンプが利用されます。
第二引数を指定しない場合は、UTC(+0時間)、つまり、変換されずに第一引数の値が返されます。
(第三引数にTRUEを指定していれば 1時間 加算されます。)
// 1732403556
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」を付加しません。
// 2024-11-24 08:12 AM
echo unix_to_human(time(), TRUE);
// 2024-11-24 08:12:36 AM
echo unix_to_human(time(), FLASE, 'eu');
// 2024-11-24 08:12
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