日付ヘルパー

日付ヘルパーのファイルは、日付を処理するのに役立つ関数で構成されています。

ヘルパーのロード

このヘルパーは次のコードを使ってロードします:

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

利用できる機能

次の関数が利用できます:

now([$timezone = NULL])
パラメータ:
  • $timezone (string) – Timezone
返り値:

UNIX timestamp

返り値の型:

int

現在時刻をUNIXタイムスタンプで返します。設定ファイルの “time reference” の 設定により、サーバのローカル時間または PHP でサポートされるタイムゾーンを 指す時刻になります。 マスターの時間を PHP でサポートされるタイムゾーンに設定しないつもりなら、 (各ユーザが各々のタイムゾーンを設定することができるサイトであれば通常そうすると 思います) PHP の time() 関数を使わずに、この関数を利用する利点はありません。

echo now('Australia/Victoria');

タイムゾーンを指定しない場合、 戻り値として time_reference の設定に基づく time() の値を返却します。

mdate([$datestr = ''[, $time = '']])
パラメータ:
  • $datestr (string) – 日付文字列
  • $time (int) – UNIX タイムスタンプ
返り値:

MySQL フォーマットされた日付

返り値の型:

string

この関数は、%Y %m %d のように各コードの前に % がついている MySQLスタイルの 日付コードを利用可能なこと以外は、 PHP の date() 関数と 同じです。

日付をこの方法で扱う利点は、date() 関数を使った時には通常しなければならない、 日付コードでない文字列の エスケープ処理について考慮する必要がないという点です。

例:

$datestring = 'Year: %Y Month: %m Day: %d - %h:%i %a';
$time = time();
echo mdate($datestring, $time);

第2引数にタイムスタンプを指定しない場合は、 現在時刻が使われます。

standard_date([$fmt = 'DATE_RFC822'[, $time = NULL]])
パラメータ:
  • $fmt (string) – 日付文字列
  • $time (int) – UNIX タイムスタンプ
返り値:

フォーマットされた日付又は不正なフォーマットの場合に FALSE

返り値の型:

string

複数の標準フォーマットのうち、ひとつの形式の日付文字列を生成できます。

例:

$format = 'DATE_RFC822';
$time = time();
echo standard_date($format, $time);

注釈

この関数は廃止予定です。 代わりにPHP 標準の date()DateTime’s format constants を使用してください。:

echo date(DATE_RFC822, time());

Supported formats:

Constant Description Example
DATE_ATOM Atom 2005-08-15T16:13:03+0000
DATE_COOKIE HTTP Cookies Sun, 14 Aug 2005 16:13:03 UTC
DATE_ISO8601 ISO-8601 2005-08-14T16:13:03+00:00
DATE_RFC822 RFC 822 Sun, 14 Aug 05 16:13:03 UTC
DATE_RFC850 RFC 850 Sunday, 14-Aug-05 16:13:03 UTC
DATE_RFC1036 RFC 1036 Sunday, 14-Aug-05 16:13:03 UTC
DATE_RFC1123 RFC 1123 Sun, 14 Aug 2005 16:13:03 UTC
DATE_RFC2822 RFC 2822 Sun, 14 Aug 2005 16:13:03 +0000
DATE_RSS RSS Sun, 14 Aug 2005 16:13:03 UTC
DATE_W3C W3C 2005-08-14T16:13:03+0000
local_to_gmt([$time = ''])
パラメータ:
  • $time (int) – UNIX タイムスタンプ
返り値:

UNIX タイムスタンプ

返り値の型:

int

UNIX タイムスタンプを入力として、その時刻をGMT(グリニッジ標準時)として返します。

例:

$gmt = local_to_gmt(time());
gmt_to_local([$time = ''[, $timezone = 'UTC'[, $dst = FALSE]]])
パラメータ:
  • $time (int) – UNIX タイムスタンプ
  • $timezone (string) – タイムゾーン
  • $dst (bool) – サマータイムが有効かどうか
返り値:

UNIX タイムスタンプ

返り値の型:

int

UNIX タイムスタンプ(グリニッジ標準時を指します)を入力として、 渡されたタイムゾーンとサマータイム適用区分にもとづいて、その地域の時刻に 変換します。

例:

$timestamp = 1140153693;
$timezone  = 'UM8';
$daylight_saving = TRUE;
echo gmt_to_local($timestamp, $timezone, $daylight_saving);

注釈

タイムゾーンのリストは、このページの一番下のリファレンスをご覧ください。

mysql_to_unix([$time = ''])
パラメータ:
  • $time (string) – MySQL タイムスタンプ
返り値:

UNIX タイムスタンプ

返り値の型:

int

MySQL タイムスタンプを入力として、その時刻を UNIX タイムスタンプとして返します。

例:

$unix = mysql_to_unix('20061124092345');
unix_to_human([$time = ''[, $seconds = FALSE[, $fmt = 'us']]])
パラメータ:
  • $time (int) – UNIX タイムスタンプ
  • $seconds (bool) – 秒を表示するかどうか
  • $fmt (string) – フォーマット(us 又は euro)
返り値:

フォーマットされた日付

返り値の型:

string

UNIXタイムスタンプを入力として、次の例のように、人間が読める形式で 返します:

YYYY-MM-DD HH:MM:SS AM/PM

これは、フォームの送信のために、フォームフィールドに表示したい場合に 役立ちます。

時間は、秒の部分をつける形式とつけない形式にフォーマットでき、 ヨーロッパ形式またはアメリカ形式にセットできます。 タイムスタンプだけが 渡された時は、秒の部分がない形式で、アメリカ形式にフォーマットされます。

例:

$now = time();
echo unix_to_human($now); // 秒なしのアメリカ形式
echo unix_to_human($now, TRUE, 'us'); // 秒ありのアメリカ形式
echo unix_to_human($now, TRUE, 'eu'); // 秒ありのヨーロッパ形式
human_to_unix([$datestr = ''])
パラメータ:
  • $datestr (int) – 日付文字列
返り値:

UNIX タイムスタンプ又は失敗した場合は FALSE

返り値の型:

int

unix_to_time() 関数の反対です。”人” の時間を入力として、 UNIXタイムスタンプを返します。 これは、フォームから “人”が読める形式に フォーマットされた日付を受け取る時に役立ちます。渡された文字列が、 上で示したようなフォーマットでない場合、ブール値の FALSE を返します。

Example:

$now = time();
$human = unix_to_human($now);
$unix = human_to_unix($human);
nice_date([$bad_date = ''[, $format = FALSE]])
パラメータ:
  • $bad_date (int) – 不完全な日付フォーマット
  • $format (string) – 返却される日付フォーマット(PHP の date() 関数と同様)
返り値:

フォーマットされた日付

返り値の型:

string

この関数は不完全な日付フォーマットの数字を引数に取り、有用な形式に変換 します。正しい日付フォーマットを引数に取ることもできます。

デフォルトでは UNIX タイムスタンプを返します。オプションとして、 第2引数にフォーマット文字列(PHP の date 関数が引き受けるものと同じ) を渡すことができます。

例:

$bad_date = '199605';
// 次の日付を生成: 1996-05-01
$better_date = nice_date($bad_date, 'Y-m-d');

$bad_date = '9-11-2001';
// 次の日付を生成: 2001-09-11
$better_date = nice_date($bad_date, 'Y-m-d');
timespan([$seconds = 1[, $time = ''[, $units = '']]])
パラメータ:
  • $seconds (int) – 秒数
  • $time (string) – UNIX タイムスタンプ
  • $units (int) – 表示する時間の単位
返り値:

フォーマットされた時刻の差

返り値の型:

string

UNIX タイムスタンプを次の例で示したようにフォーマットします:

1 Year, 10 Months, 2 Weeks, 5 Days, 10 Hours, 16 Minutes

第1引数には、 UNIX タイムスタンプを指定する必要があります。 第2引数には、第1引数で渡したタイムスタンプよりも大きい(後の時間の) UNIX タイムスタンプを指定する必要があります。 第3引数は、オプションです。表示する時間の単位を数値で制限します。

もし第2引数が空だった場合は現在時刻が使用されます。

この関数の主要な目的は、過去のある時点から現在までの経過時間を 表示するというものです。

例:

$post_date = '1079621429';
$now = time();
$units = 2;
echo timespan($post_date, $now, $units);

注釈

この関数が生成するテキストは、次の言語ファイルの中にあります file: language/<あなたの言語>/date_lang.php

days_in_month([$month = 0[, $year = '']])
パラメータ:
  • $month (int) – 月数
  • $year (int) – 年数
返り値:

指定された月の日数

返り値の型:

int

指定された年月の日数を返します。 うるう年が考慮されます。

例:

echo days_in_month(06, 2005);

第2引数が空の時、現在の年が使われます。

注釈

この関数は cal_days_in_month() が利用できる場合は エイリアスになります。

date_range([$unix_start = ''[, $mixed = ''[, $is_unix = TRUE[, $format = 'Y-m-d']]]])
パラメータ:
  • $unix_start (int) – 開始日の UNIX タイムスタンプ
  • $mixed (int) – 終了日の UNIX タイムスタンプ又は日数
  • $is_unix (bool) – 第2引数がタイムスタンプでない場合は FALSE を設定する
  • $format (string) – 出力する日付フォーマット。 date() 関数と同様。
返り値:

日付の配列

返り値の型:

array

指定した期間で日付のリストが返却されます。

例:

$range = date_range('2012-01-01', '2012-01-15');
echo "First 15 days of 2012:";
foreach ($range as $date)
{
        echo $date."\n";
}
timezones([$tz = ''])
パラメータ:
  • $tz (string) – 数値のタイムゾーン
返り値:

UTCからの時差

返り値の型:

int

タイムゾーンリファレンス(有効なタイムゾーンのリストは、下の “タイムゾーンリファレンス” を参照してください)を引数にとり、UTC からの時差を数字で返します。

例:

echo timezones('UM5');

このメソッドは、timezone_menu() とともに使うと役立ちます。

timezone_menu([$default = 'UTC'[, $class = ''[, $name = 'timezones'[, $attributes = '']]]])
パラメータ:
  • $default (string) – タイムゾーン
  • $class (string) – クラス名
  • $name (string) – メニュー名
  • $attributes (mixed) – HTML 属性
返り値:

タイムゾーンの HTML プルダウンメニュー

返り値の型:

string

次のようなタイムゾーンのプルダウンメニューを生成します:

このメニューは、ユーザごとのローカル時間ををセットできる会員制サイトの 場合に使えます。

第1引数で、メニューの “選択(selected)” 状態 を指定します。たとえば、 太平洋標準時をデフォルト値にセットしたい場合は、次のようにします:

echo timezone_menu('UM8');

メニューに指定する値を調べるには、下記のタイムゾーンリファレンスをご覧ください

第2引数では、メニューの CSS クラスの名前を指定できます。

第4引数は生成されるプルダウンメニューに一つ以上の HTML 属性を設定できます。

注釈

このメニューに含まれるテキストは、次の言語ファイルの中にあります: language/<あなたの言語>/date_lang.php

タイムゾーンリファレンス

次の表は、地域ごとの各タイムゾーンを示したものです。

いくつかの地域のリストは見易さとフォーマットの都合で要約されていることにご注意ください。

Time Zone Location
UM12 (UTC - 12:00) Baker/Howland Island
UM11 (UTC - 11:00) Samoa Time Zone, Niue
UM10 (UTC - 10:00) Hawaii-Aleutian Standard Time, Cook Islands
UM95 (UTC - 09:30) Marquesas Islands
UM9 (UTC - 09:00) Alaska Standard Time, Gambier Islands
UM8 (UTC - 08:00) Pacific Standard Time, Clipperton Island
UM7 (UTC - 07:00) Mountain Standard Time
UM6 (UTC - 06:00) Central Standard Time
UM5 (UTC - 05:00) Eastern Standard Time, Western Caribbean
UM45 (UTC - 04:30) Venezuelan Standard Time
UM4 (UTC - 04:00) Atlantic Standard Time, Eastern Caribbean
UM35 (UTC - 03:30) Newfoundland Standard Time
UM3 (UTC - 03:00) Argentina, Brazil, French Guiana, Uruguay
UM2 (UTC - 02:00) South Georgia/South Sandwich Islands
UM1 (UTC -1:00) Azores, Cape Verde Islands
UTC (UTC) Greenwich Mean Time, Western European Time
UP1 (UTC +1:00) Central European Time, West Africa Time
UP2 (UTC +2:00) Central Africa Time, Eastern European Time
UP3 (UTC +3:00) Moscow Time, East Africa Time
UP35 (UTC +3:30) Iran Standard Time
UP4 (UTC +4:00) Azerbaijan Standard Time, Samara Time
UP45 (UTC +4:30) Afghanistan
UP5 (UTC +5:00) Pakistan Standard Time, Yekaterinburg Time
UP55 (UTC +5:30) Indian Standard Time, Sri Lanka Time
UP575 (UTC +5:45) Nepal Time
UP6 (UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time
UP65 (UTC +6:30) Cocos Islands, Myanmar
UP7 (UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam
UP8 (UTC +8:00) Australian Western Standard Time, Beijing Time
UP875 (UTC +8:45) Australian Central Western Standard Time
UP9 (UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk
UP95 (UTC +9:30) Australian Central Standard Time
UP10 (UTC +10:00) Australian Eastern Standard Time, Vladivostok Time
UP105 (UTC +10:30) Lord Howe Island
UP11 (UTC +11:00) Srednekolymsk Time, Solomon Islands, Vanuatu
UP115 (UTC +11:30) Norfolk Island
UP12 (UTC +12:00) Fiji, Gilbert Islands, Kamchatka, New Zealand
UP1275 (UTC +12:45) Chatham Islands Standard Time
UP13 (UTC +13:00) Phoenix Islands Time, Tonga
UP14 (UTC +14:00) Line Islands