カレンダーおよびイベント関連日付・時刻関数
- 定義済みの定数
- 日付のフォーマット形式
- checkdate〔有効な日付かどうか調べる〕
- date〔ローカル現在日時をフォーマットして取得〕
- date_create
〔新しいDateTimeオブジェクトを返す〕
- date_default_timezone_get
〔スクリプト中の日付・時間関数で使用されるデフォルトタイムゾーンを取得する〕
- date_default_timezone_set
〔スクリプト中の日付・時間関数で使用されるデフォルトタイムゾーンを設定する〕
- date_parse
〔指定した日付の詳細情報を連想配列で返す〕
- date_sun_info
〔日の出・日の入り時刻と薄明かりの開始・終了時刻の情報を含む配列を返す〕
- date_sunrise
〔指定した日付と場所の日の出時刻を返す〕
- date_sunset
〔指定した日付と場所の日の入り時刻を返す〕
- getdate〔日付/時刻情報を連想配列で取得〕
- gettimeofday〔現在時間を連想配列で取得する〕
- gmdate〔現在のグリニッジ標準時(GMT)をフォーマットして取得する〕
- gmmktime〔現在のグリニッジ標準時(GMT)からUnixタイムスタンプを取得する〕
- gmstrftime〔ロケールの設定に基づいてGMT/UTC 時刻/日付をフォーマットする〕
- idate〔ローカルな時刻/日付を整数として整形する〕
- localtime〔ローカルタイムを取得する〕
- microtime〔現在のUnixタイムスタンプをマイクロ秒まで返す〕
- mktime〔日付を UNIX時間として取得する〕
- strftime〔ロケールの設定に基づいてローカルな日付・時間をフォーマットする〕
- strtotime〔英文形式の日付をUNIX時間に変換する〕
- time〔現在のUNIX時間を取得する〕
- timezone_open
〔新しい DateTimeZone オブジェクトを返す〕
- timezone_name_from_addr
〔略称からタイムゾーン名を返す〕
- timezone_version_get
〔timezonedbの現在のバージョンを取得〕
定義済みの定数
unknown
DATE_定数は、PHP v5.1.1からで定義されており、標準的な日付の書式を表します。 日付フォーマット関数(date()など)で使用します。
下記の定数は、PHP v5.1.2から存在し、date_sunrise()関数およびdate_sunset()関数が返す結果の書式を指定するのに使用します。
定数 | 型 | 説明 | 例 |
---|---|---|---|
SUNFUNCS_RET_STRING | integer | 時:分 結果を文字列で返します。 | 08:02 |
SUNFUNCS_RET_DOUBLE | integer | 時刻を表す浮動小数点値 結果を浮動小数点で返します。 | 8.75 16.78243132 |
SUNFUNCS_RET_TIMESTAMP | integer | タイムスタンプ 結果を整数(タイムスタンプ)で返します。 | 1095034606 |
日付のフォーマット形式
unknown
F | 意味 | F | 意味 |
---|---|---|---|
a | amまたはpm | L | 閏年では1、それ以外は0を返す |
A | AMまたはPM | n | 先頭に0をつけない(0~12)の月 |
d | 2桁の日付 | m | 2桁の月(01~12) |
D | 3文字の曜日(Sun~Sat) | M | 3文字の月(Jan~Dec) |
F | フルスペルの英字で月 | s | 2桁の秒数(00~59) |
h | 12時間単位(00~12)の時間 | S | 英文の序数を表す接頭語(th~nd) |
H | 24時間単位(00~23)の時間 | t | 指定した月の日数(28~31) |
g | 先頭に0を付けない12時間単位(0~12)の時間 | U | UNIX時間(1970年1月1日からの秒数) |
G | 先頭に0を付けない24時間単位(0~23)の時間 | w | 数値で示す曜日(0~6) |
i | 2桁の分(00~59) | y | 西暦下2桁 |
j | 先頭に0を付けない(0~31)の日 | Y | 西暦4桁 |
l | フルスペルの英字の曜日 | z | その年の1月1日から通算日を定義 |
Z | タイムゾーンのオフセット秒(-43200~43200) |
checkdate
有効な日付かどうか調べる
unknown
指定した日付(年月日)が有効なら TRUE、そうでないなら FALSE を返します。 引数に指定する日付(年月日)は、「月、日、年」という順番になるので注意して下さい。
有効な日付かどうかの判断基準
- 「年」が1~32767の間であること
- 「月」が1~12の間であること
- 「日」が指定された「月」の日数以内に収まること(閏年も考慮の対象)
<?
var_dump(checkdate(1, 30, 2005)); // bool(true)
var_dump(checkdate(2, 29, 2005)); // bool(false)
if(checkdate(1, 30, 2005)) echo "有効な日付です";
else echo "無効な日付です";
//有効な日付です
?>
date
ローカル現在日時をフォーマットして取得
unknown
タイムスタンプをフォーマットで指定した日付を表す文字列にして返します。 タイムスタンプが数値でない場合はFALSEを返し、エラー(E_WARNING)が発生します。
オプションの第2引数フォーマットには、日付のフォーマット形式を指定します。 フォーマットに認識されない文字がある場合は、そのまま表示されます。 Z形式は、gmdate()を使用した場合、常に0を返します。
オプションの第3引数タイムスタンプには、UNIX時間(整数)を指定します。 省略した場合は、現在のローカル時刻(=time()関数の返り値)が使用されます(デフォルト)。
<?
$today = date("Y年m月d日 H:i:s");
echo "現在日時は、" . $today . "です";
//現在日時は、2005年02月13日 22:52:54です
$birthday = date("Y年m月d日", mktime(0,0,0,12,1,1980));
echo "誕生日は、" . $birthday . "です";
//誕生日は、1980年12月01日です
?>
date_create 
新しいDateTimeオブジェクトを返す
unknown
新しいDateTimeオブジェクトを返します。 成功した場合にDateTimeオブジェクト、失敗した場合にFALSEを返します。
オプションの第1引数timeには、strtotime()が理解する日付を表す文字列を指定します。 デフォルトは「now」(現在時刻)です。
オプションの第2引数タイムゾーンには、その時間のタイムゾーンを指定します。
<?
$now=date_create();
echo date_format($now, DATE_ATOM);
// 2009-05-06T12:25:21+09:00
$datetime=date_create('2008-08-03 14:52:10');
echo date_format($datetime, DATE_ATOM);
// 2008-08-03T14:52:10+09:00
?>
date_default_timezone_get 
スクリプト中の日付・時間関数で使用されるデフォルトタイムゾーンを取得する
unknown
スクリプト中の日付・時刻関数で使用されるデフォルトのタイムゾーンを、下記の優先順位で取得し、文字列として返します。
- date_default_timezone_set()を使用して設定したタイムゾーンを読み込む(設定されている場合のみ)
- TZ環境変数を読み込む(空白でない場合のみ)
- date.timezone iniオプションを読み込む(設定されている場合のみ)
- ホストOSに問合せる(OSがそれに対応していて許可されている場合のみ)
これらがすべて失敗した場合は、デフォルトのタイムゾーンであるUTCを返します。
<?
### デフォルトのタイムゾーンの取得
date_default_timezone_set('Asia/Tokyo');
if(date_default_timezone_get()){
echo 'date_default_timezone_set: '.date_default_timezone_get().'<br>';
}
// date_default_timezone_set: Asia/Tokyo
if(ini_get('date.timezone')){
echo 'date.timezone: '.ini_get('date.timezone');
}
// date.timezone: Asia/Tokyo
### タイムゾーンの短縮名の取得
echo date_default_timezone_get().'=>'.date('e').'=>'.date('T');
// Asia/Tokyo=>Asia/Tokyo=>JST
?>
date_default_timezone_set 
スクリプト中の日付・時間関数で使用されるデフォルトタイムゾーンを設定する
unknown
スクリプト中の日付・時刻関数で使用されるデフォルトのタイムゾーンを設定します。 指定したタイムゾーンIDが無効な場合にFALSE、それ以外の場合にTRUEを返します。
第1引数タイムゾーンIDには、UTCや「Asia/Tokyo」、「Europe/Paris」などのタイムゾーンIDを指定します。 有効なタイムゾーンIDの一覧は、サポートされるタイムゾーンのリストを参照してください。
PHP v5.1.0以降、タイムゾーンIDを正しく設定せずに日付・時刻関数をコールすると E_NOTICEが発生するようになりました。 またシステムの設定やTZ環境変数を使用するとE_STRICTが発生するようになりましたので注意してください。
<?
# デフォルトのタイムゾーンを設定
date_default_timezone_set('Asia/Tokyo');
# デフォルトのタイムゾーンを取得
$script_tz = date_default_timezone_get();
# スクリプト中のタイムゾーンとini設定のタイムゾーンを比較
if(strcmp($script_tz, ini_get('date.timezone'))){
echo 'スクリプトのタイムゾーンはini設定のタイムゾーンと異なります';
}else{
echo 'スクリプトのタイムゾーンはini設定のタイムゾーンと同じです';
}
?>
date_parse 
指定した日付の詳細情報を連想配列で返す
unknown
指定した日付の詳細情報を連想配列で返します。
第1引数日付には、strtotime()が理解する日付を表す文字列を指定します。
<?
# 日付の詳細情報を取得
echo "<pre>".print_r(date_parse("2009-04-30 23:50:30.5"), true)."</pre>";
?>
date_sun_info 
日の出・日の入り時刻と薄明かりの開始・終了時刻の情報を含む配列を返す
unknown
日の出・日の入り時刻と薄明かりの開始・終了時刻の情報を含む配列を返します。 失敗した場合はFALSEを返します。
<?
# 東京
$sun_info = date_sun_info(strtotime("2009-04-30"), 35.68949, 139.69171);
foreach ($sun_info as $key => $val) {
echo "$key: ".date("H:i:s", $val)."\n";
}
/*
sunrise: 04:50:13
sunset: 18:26:41
transit: 11:38:27
civil_twilight_begin: 04:23:02
civil_twilight_end: 18:53:53
nautical_twilight_begin: 03:50:14
nautical_twilight_end: 19:26:41
astronomical_twilight_begin: 03:15:38
astronomical_twilight_end: 20:01:17
*/
?>
date_sunrise 
指定した日付と場所の日の出時刻を返す
unknown
タイムスタンプで指定した日付と、指定した場所の日の出時刻を指定したフォーマットで返します。 失敗した場合はFALSEを返します。
第1引数タイムスタンプには、日の出時刻を取得する日のタイムスタンプを指定します。
オプションの第2引数フォーマットには、定数を指定します。 デフォルトは、SUNFUNCS_RET_STRING(時:分)です。
オプションの第3引数経度のデフォルトは北緯ni_get("date.default_latitude")
です。
南緯は負の値で現します。
オプションの第4引数緯度のデフォルトは東経ni_get("date.default_longitude")
です。
西経は負の値で現します。
オプションの第5引数天頂のデフォルトは、date.sunrise_zenith
です。
オプションの第6引数gmt_offsetには、GMTからの時間差を時間単位で指定します。 デフォルトは0です。
PHP v5.1.0以降、タイムゾーンIDを正しく設定せずに日付・時刻関数をコールすると E_NOTICEが発生するようになりました。 またシステムの設定やTZ環境変数を使用するとE_STRICTが発生するようになりましたので注意してください。
<?
### 東京の日の出時刻を計算する
/*
緯度: 北緯 35.68949
経度: 西経 139.69171
天頂 ~= 90
時差: +9 GMT
*/
echo date("D M d Y"). ', sunrise time : '.date_sunrise(time(), SUNFUNCS_RET_STRING, 35.68949, 139.69171, 90, 9);
// Wed May 06 2009, sunrise time : 04:47
?>
date_sunset 
指定した日付と場所の日の入り時刻を返す
unknown
タイムスタンプで指定した日付と、指定した場所の日の入り時刻を指定したフォーマットで返します。 失敗した場合はFALSEを返します。
第1引数タイムスタンプには、日の入り時刻を取得する日のタイムスタンプを指定します。
オプションの第2引数フォーマットには、定数を指定します。 デフォツトは、SUNFUNCS_RET_STRING(時:分)です。
オプションの第3引数経度のデフォルトは北緯ni_get("date.default_latitude")
です。
南緯は負の値で現します。
オプションの第4引数緯度のデフォルトは東経ni_get("date.default_longitude")
です。
西経は負の値で現します。
オプションの第5引数天頂のデフォルトは、date.sunrise_zenith
です。
オプションの第6引数gmt_offsetには、GMTからの時間差を時間単位で指定します。 デフォルトは0です。
PHP v5.1.0以降、タイムゾーンIDを正しく設定せずに日付・時刻関数をコールすると E_NOTICEが発生するようになりました。 またシステムの設定やTZ環境変数を使用するとE_STRICTが発生するようになりましたので注意してください。
<?
### 東京の日の出時刻を計算する
/*
緯度: 北緯 35.68949
経度: 西経 139.69171
天頂 ~= 90
時差: +9 GMT
*/
echo date("D M d Y"). ', sunset time : '.date_sunset(time(), SUNFUNCS_RET_STRING, 35.68949, 139.69171, 90, 9);
// Wed May 06 2009, sunset time : 18:28
?>
getdate
日付/時刻情報を連想配列で取得
unknown
タイムスタンプに関する日付情報の連想配列を返します。 オプションの第2引数タイムスタンプを省略した場合は、現在ローカル時刻(=time()関数の値)に関する情報を返します(デフォルト)。
返り値の連想配列の内容は、下記になります。
キー | 意味 | 返り値の例 |
---|---|---|
second | 現在の秒 | 0~59 |
minutes | 現在の分 | 0~59 |
hours | 現在の時 | 0~23 |
mday | 現在の月次の日付 | 1~31 |
wday | 現在の曜日番号 | 0(日曜)~6(土曜) |
mon | 現在の月 | 1~12 |
year | 現在の年 | 例2005 |
yday | その年の通算日 | 0~365 |
weekday | 現在の曜日の文字列 | Sunday~Saturday |
month | 現在の月の文字列 | January~December |
0 | UNIX時間(1970年1月1日)からの秒数。time()の戻り値と同様。 date()でも使用される。 | システムによって違うが、通常は-2147483648~2147483647. |
<?
// timestamp を省略した場合(現在ローカル時間)
$tday = getdate();
echo "現在日付:".$tday[year]."年".$tday[mon]."月".$tday[mday]."日";
//現在日付:2005年02月13日
print_r($tday);
/*
Array
(
[seconds] => 28
[minutes] => 56
[hours] => 22
[mday] => 13
[wday] => 0
[mon] => 2
[year] => 2005
[yday] => 43
[weekday] => Sunday
[month] => February
[0] => 1108302988
)
*/
// timestamp を指定した場合
$timestamp = mktime(0,0,0,12,1,1980);
$birthday = getdate($timestamp);
echo "誕生日:".$birthday[year]."年".$birthday[mon]."月".$birthday[mday]."日";
//誕生日:1980年12月1日
print_r($birthday);
/*
Array
(
[seconds] => 0
[minutes] => 0
[hours] => 0
[mday] => 1
[wday] => 1
[mon] => 12
[year] => 1980
[yday] => 335
[weekday] => Monday
[month] => December
[0] => 344444400
)
*/
?>
gettimeofday
現在時間を連想配列で取得する
unknown
システムコールから返されたデータを有する連想配列を返します。 オプションの第1引数return_float(PHP v5.1.0~)にTRUEが指定されている場合は、浮動小数点型で返します。
キー | 意味 |
---|---|
sec | 秒 |
usec | マイクロ秒 |
minuteswest | グリニッジ標準時を分で表した値 |
dsttime | 夏時間補正の型。サマータイムなら1、そうでない場合は0を返す |
<?
print_r( gettimeofday() );
/*
Array
(
[sec] => 1108308165
[usec] => 852384
[minuteswest] => -540
[dsttime] => 0
)
*/
?>
gmdate
現在のグリニッジ標準時(GMT)をフォーマットして取得する
unknown
date()と同じ動作ですが、返される時刻がグリニッジ標準時(GMT)である点が異なります。 グリニッジ標準時では、日本時間よりも9時間前の時刻になります。
グリニッジ標準時を日本時間に換算するには、この関数の返り値に32400秒(60*60*9)を加算します。
<?
//グリニッジ標準時は日本時間と9時間の差異がある
echo date("M d Y H:i:s") . "<br>"; // May 03 2006 22:32:55
echo gmdate("M d Y H:i:s") . "<br>"; // May 03 2006 13:32:55
//グリニッジ標準時を日本時間にするには32400秒(60*60*9)加える
echo gmdate("M d Y H:i:s", time()+32400) . "<br>"; // May 03 2006 22:35:39s
?>
gmmktime
現在のグリニッジ標準時(GMT)からUnixタイムスタンプを取得する
unknown
UNIX時間を整数で返します。 指定する引数がGMT日付を表すことを除いて、mktime()と同じです。 この関数は内部でmktime()を使用しているので、ローカル時刻として有効な値のみ使用することができます。
mktime()と同様に、引数は右から順に省略することができます。 省略した引数には、GMTの日付と時刻に従って、現在の値が割り当てられます。
オプションの第7引数is_dstは、PHP v5.1.0で廃止されました。
<?
echo gmmktime(0, 0, 0, 1, 1, 1970); // 0
?>
gmstrftime
ロケールの設定に基づいてGMT/UTC 時刻/日付をフォーマットする
unknown
指定したタイムスタンプまたは、タイムスタンプが指定されていない場合は、現在のローカル時刻を使用してGMT/UTC 時刻/日付を、指定したフォーマットに基づいた形式にして返します。
グリニッジ標準時(GMT)を返すことを除いて、strftime()と同じ動作です。
第1引数フォーマットは、strftime()を参照してください。
オプションの第2引数タイムスタンプには、UNIX時間を整数で指定します。 省略した場合は、現在ローカル時刻(=time()の値)が使用されます。
<?
setlocale(LC_TIME, 'jpn');
echo strftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98))."\n";
// Dec 31 1998 20:00:00
echo gmstrftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98))."\n";
// Dec 31 1998 11:00:00
?>
idate
ローカルな時刻/日付を整数として整形する
unknown
指定したタイムスタンプを指定したフォーマットの形式にした日付数値を返します。 タイムスタンプを省略した場合は、現在のローカル時刻(=time()の返り値)が適用されます。
date()と異なり、フォーマットには1文字しか指定することができません。
<?
$timestamp = strtotime('1st January 2004'); //1072915200
# 年を2桁で表示(「04」のように年が0から始まる場合は、4のみが表示されます)
echo idate('y', $timestamp); // 4
?>
localtime
ローカルタイムを取得する
unknown
C言語のlocaltime関数の返り値と同じ内容の配列を返します。
オプションの第1引数タイムスタンプを省略した場合は、現在ローカル時刻(=time()関数の値)が使用されます(デフォルト)。
オプションの第2引数is_associativeにFALSEを指定、または省略した場合、返り値は数値添字の配列となります。 TRUEを指定した場合、返り値は連想配列となります。
キー | 内容 |
---|---|
tm_sec | 秒 |
tm_min | 分 |
tm_hour | 時間 |
tm_mday | 月単位の日付 |
tm_mon | 月。月は0(1月)~11(12月)。 |
tm_year | 1900年からの年 |
tm_wday | 週単位の日付。0(日曜日)~6(土曜日)。 |
tm_yday | 年単位の日付 |
tm_isdst | 夏時間が有効かどうか |
<?
$localtime = localtime();
echo nl2br(print_r($localtime,true));
/*
Array
(
[0] => 21
[1] => 35
[2] => 23
[3] => 3
[4] => 4
[5] => 106
[6] => 3
[7] => 122
[8] => 0
)
*/
//返り値を連想配列で返す場合(第2引数にTRUEを指定)
$localtime_assoc = localtime(time(), true);
echo nl2br(print_r($localtime_assoc,true));
/*
Array
(
[tm_sec] => 21
[tm_min] => 35
[tm_hour] => 23
[tm_mday] => 3
[tm_mon] => 4
[tm_year] => 106
[tm_wday] => 3
[tm_yday] => 122
[tm_isdst] => 0
)
*/
?>
microtime
現在のUnixタイムスタンプをマイクロ秒まで返す
unknown
現在のUNIX時間をマイクロ秒単位で返します。
オプションの第1引数get_as_floatet_as_floatにTRUEを指定すると、返り値を秒単位(浮動小数点型)で返します。 省略すると、文字列「msec sec」(文字列の各部分は秒単位)を返します。 「sec」は1970年1月1日 0:00:00 GMTから計算した秒数、「msec」はマイクロ秒の部分になります。
<?
##### PHP 5 におけるタイマスクリプト実行
$time_start=microtime(true);
// しばらくスリープ
usleep(100);
$time_end=microtime(true);
$time=$time_end - $time_start;
echo "Did nothing in $time seconds\n";
// Did nothing in 0.00317001342773 seconds
?>
mktime
日付を UNIX時間として取得する
unknown
指定した引数に従ってUNIX時間を返します。 不正な引数があった場合に-1(PHP5.1以降はFALSE)を返します。
引数は右から順に省略することができます。 省略した引数には、現在ローカル時刻(=time()関数の値)が割り当てられます。
引数を省略した場合
<?
//以下の2つは '2006-04-03 00:44:40' を出力
//引数1つ(時のみ)
echo date('Y-m-d H:i:s', mktime(17)) . "<br>";
//引数2つ(時、分)
echo date('Y-m-d H:i:s', mktime(17,45)) . "<br>";
//以下はいずれも '2006-04-03 17:45:59' を出力
//引数3つ(時、分、秒)
echo date('Y-m-d H:i:s', mktime(17,45,59)) . "<br>";
//引数4つ(時、分、秒、月)
echo date('Y-m-d H:i:s', mktime(17,45,59,4)) . "<br>";
//引数5つ(時、分、秒、月、日)
echo date('Y-m-d H:i:s', mktime(17,45,59,4,3)) . "<br>";
//引数6つ(時、分、秒、月、日、年)
echo date('Y-m-d H:i:s', mktime(17,45,59,4,3,2006)) . "<br>";
?>
範囲外の値は自動修正される
この関数は、指定した日付の妥当性も確認します。 不正ではなく範囲外の値を指定した場合は、自動的に修正して計算されます。
<?
// 以下の例の出力はいずれも、'2007/01/01' になる
echo date('Y/m/d', mktime(0,0,0,12,32,06));
echo date('Y/m/d', mktime(0,0,0,12,32,2006));
?>
月の末日を取得
オプションの第5引数日に0を指定した場合は、指定した月の前月の末日が自動計算されます。
<?
//指定した月の'前月の末日'を取得するには、日に'0'を指定する
$lastday = mktime(0, 0, 0, 3, 0, 2006);
echo date("Y年 m月 d日", $lastday); // 2006年 02月 28日
?>
オプションの第7引数is_dstは、サマータイムなら1を、そうでない場合は0、不明ならば-1がセットされます(PHP v5.1.0で廃止)。
strftime
ロケールの設定に基づいてローカルな日付・時間をフォーマットする
unknown
ローカルの日付・時刻を、ロケールの設定に基づいてフォーマットします。 月、曜日の名前などの言語に依存する文字列は、setlocale()で指定された現在のロケールを考慮して表示されます。
第1引数フォーマットには、日付のフォーマット形式を指定します。 指定可能な文字数は、1023文字です。
フォーマット | 説明 | 返り値の例 |
---|---|---|
日 | ||
%a | 短縮された曜日の名前 | Sun~Sat |
%A | 完全な曜日の名前 | Sunday~Saturday |
%d | 10 進数で 2桁の日付(先頭のゼロつき) | 01~31 |
%e | 1桁の場合は先頭にスペースをいれた日付 | 1~31 |
%j | 3桁で先頭にゼロを含む年間での日付 | 001~366 |
%u | ISO-8601 数値表現であらわした曜日 | 1(月曜日)~7(土曜日) |
%w | 数値表現であらわした曜日 | 0(日曜日)~6(土曜日) |
週 | ||
%U | 指定した年の週番号。最初の日曜日を第一週の開始日とする | 13(年間の第13週の場合) |
%V | ISO-8601:1988 で規定された、指定した年の週番号。週の開始日は月曜日で、第1週は少なくとも 4日はあることになる | 01~53(53 は年をまたがる週になります) |
%W | その年の週番号の数値表現。最初の月曜日を最初の週の初日とする | 46(46番目の週の場合。開始日は月曜日) |
月 | ||
%b | 現在のロケールに基づく短縮された月の名前 | Jan~Dec |
%B | 現在のロケールに基づく完全な月の名前 | January~December |
%h | 現在のロケールに基づく短縮された月の名前(%b のエイリアス) | Jan~Dec |
%m | 2桁であらわした月 | 01(1月)~12(12月) |
年 | ||
%C | 2桁であらわした世紀(年を 100 で割り、整数に丸めたもの) | 20 正規の場合は 19 |
%g | 2桁であらわした年。ISO-8601:1988 標準形式(%V を参照) | 2009年 1月 6日の場合は 09 |
%G | %g の 4桁完全版 | 2009年 1月 3日の場合は 2009 |
%y | 2桁であらわした年 | 2009年の場合は 09、1979年の場合は 79 |
%Y | 4桁であらわした年 | 2038 |
時 | ||
%H | 2桁であらわした 24 時間制の時間 | 00~23 |
%I | 2桁であらわした 12 時間制の時間 | 01~12 |
%l(lower-case 'L') | 12 時間制の時間で、1桁の場合は先頭にスペースをつけたもの | 1~12 |
%M | 2桁であらわした分 | 00~59 |
%p | 指定した時刻に応じた大文字の 'AM'あるいは'PM' | 00:31ならAM、22:23ならPM |
%P | 指定した時刻に応じた小文字の 'am'あるいは'pm' | 00:31ならam、22:23ならpm |
%r | '%I:%M:%S %p'と同じ | 21:34:17なら09:34:17 PM |
%R | '%H:%M'と同じ | 12:35 AMなら00:35、4:44 PMなら16:44 |
%S | 2桁であらわした秒 | 00~59 |
%T | '%H:%M:%S'と同じ | 09:34:17 PMなら21:34:17 |
%X | Preferred time representation based on locale, without the date | Example: 03:59:16 or 15:59:16 |
%z | UTC からのオフセットあるいはタイムゾーン略称(OS に依存) | 東海岸時刻なら-0500あるいはEST |
%Z | タイムゾーンオフセットあるいは略称のうち %z で返されないもの(OS に依存) | 東海岸時刻なら-0500あるいはEST |
タイムスタンプ | ||
%c | 現在のロケールにもとづく日付と時間の表現 | Tue Feb 5 00:45:10 2009 |
%D | '%m/%d/%y'と同じ | 2009年 2月 5日なら 02/05/09 |
%F | '%y-%m-%d'と同じ(データベースのタイムスタンプとして一般的) | 2009年 2月 5日なら 2009-02-05 |
%s | Unix エポックからのタイムスタンプ(time() 関数と同じ) | 1979年 9月 10日午前 08:40:00なら305815200 |
%x | 現在のロケールにもとづく日付の表現(時間は除く) | 2009年 2月 5日なら 02/05/09 |
その他 | ||
%n | 改行文字(' ') | - |
%t | タブ文字(' ') | - |
%% | パーセント文字('%') | - |
オプションの第2引数タイムスタンプには、UNIX時間を整数で指定します。 省略した場合は、現在ローカル時刻(=time()の値)が使用されます。
<?
setlocale(LC_TIME, 'en_US');
echo strftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98))."\n";
// Dec 31 1998 20:00:00
echo gmstrftime("%b %d %Y %H:%M:%S", mktime(20, 0, 0, 12, 31, 98))."\n";
// Dec 31 1998 11:00:00
?>
<?
# 16:10 2009/05/06
# 日
echo "短縮された曜日の名前:".strftime("%a")."<br>"; // Wed
echo "完全な曜日の名前:".strftime("%A")."<br>"; // Wednesday
echo "10進数で2桁の日付 (先頭のゼロつき):".strftime("%d")."<br>"; // 06
echo "3桁で先頭にゼロを含む年間での日付:".strftime("%j")."<br>"; // 126
echo "数値表現であらわした曜日:".strftime("%w")."<br>"; // 3
# 週
echo "指定した年の週番号:".strftime("%U")."<br>"; // 18
echo "その年の週番号の数値表現:".strftime("%w")."<br>"; // 3
# 月
echo "現在のロケールに基づく短縮された月の名前:".strftime("%b")."<br>"; // May
echo "現在のロケールに基づく完全な月の名前:".strftime("%B")."<br>"; // May
echo "2桁であらわした月:".strftime("%m")."<br>"; // 05
# 年
echo "2桁であらわした年:".strftime("%y")."<br>"; // 09
echo "4桁であらわした年:".strftime("%Y")."<br>"; // 2009
# 時
echo "2桁であらわした24時間制の時間:".strftime("%H")."<br>"; // 16
echo "2桁であらわした12時間制の時間:".strftime("%I")."<br>"; // 04
echo "2桁であらわした分:".strftime("%M")."<br>"; // 10
echo "指定した時刻に応じた大文字の 'AM' あるいは 'PM':".strftime("%p")."<br>"; // PM
echo "2桁であらわした秒:".strftime("%S")."<br>"; // 26
echo "日付なしの時間のみ:".strftime("%X")."<br>"; // 16:10:26
# タイムスタンプ
echo "現在のロケールにもとづく日付と時間の表現:".strftime("%c")."<br>"; // 05/06/09 16:10:26
echo "現在のロケールにもとづく日付の表現(時間は除く):".strftime("%x")."<br>"; // 05/06/09
?>
strtotime
英文形式の日付をUNIX時間に変換する
unknown
英文形式の日付を含む文字列を指定すると、nowで与えられた形式からUNIX時間へ変換して返します。 失敗した場合に-1(PHP v5.1.0以降はFALSE)を返します。
オプションの第2引数nowを省略した場合は、現在ローカル時刻(=time()の値)が使用されます。
<?
/******************** 失敗のチェック */
$str='hogehoge';
$timestamp = strtotime($str);
# PHP5.1.0以降は失敗した場合に 'FALSE' を返す
# それ以前のバージョンでは、'-1' を返す
if ((PHP_VERSION >= "5.1.0" && $timestamp === false) || (PHP_VERSION < "5.1.0" && $timestamp === -1)) {
echo "'".$str."' は英文日付文字列ではありません<br>\n";
}else{
echo date('Y-m-d H:i:s', $timestamp);
}
?>
年を2桁の数値で指定した場合、その値が以下のようにそれぞれ変換されます。
- 0~37の範囲なら2006~2037
- 70~99の範囲なら1970~1999
<?
//年に0~37の2桁の数値を指定
echo date("Y-m-d", strtotime("10 September 0")), "<br>\n"; // 2000-09-10
echo date("Y-m-d", strtotime("10 September 37")), "<br>\n"; // 2037-09-10
//年に70~99の2桁の数値を指定
echo date("Y-m-d", strtotime("10 September 70")), "<br>\n"; // 1970-09-10
echo date("Y-m-d", strtotime("10 September 99")), "<br>\n"; // 1999-09-10
//今日、昨日、明日
echo date("Y-m-d", strtotime("now")) . "<br>\n"; // 2006-05-03
echo date("Y-m-d", strtotime("today")) . "<br>\n"; // 2006-05-03
echo date("Y-m-d", strtotime("yesterday")) . "<br>\n"; // 2006-05-02
echo date("Y-m-d", strtotime("tomorrow")) . "<br>\n"; // 2006-05-04
//今日より前で一番最近の火曜日
echo date("Y-m-d", strtotime("last Tue")) . "<br>\n"; // 2006-05-02
//翌週の月曜日
echo date("Y-m-d", strtotime("next Monday")) . "<br>\n"; // 2006-05-08
echo date("Y-m-d", strtotime("next Mon")) . "<br>\n"; // 2006-05-08
//2週間後
echo date("Y-m-d", strtotime("+2 week")) . "<br>\n"; // 2006-05-17
echo date("Y-m-d", strtotime("2 week")) . "<br>\n"; // 2006-05-17
//1年後
echo date("Y-m-d", strtotime("+1 year")) . "<br>\n"; // 2007-05-03
echo date("Y-m-d", strtotime("+1 year", time())); // 2007-05-03
?>
time
現在のUNIX時間を取得する
unknown
現在時刻をUNIX時間として返すため、現在時刻と20時間の差異があります。
UNIX時間を現在時間に換算するには、この関数の返り値に72000秒(60*60*20)を加算します。
<?
$now = time() + 72000;
echo date('Y 年 m月 d日 H:i:s', $now); // 2006 年 04月 03日 18:43:45
?>
timezone_open 
新しい DateTimeZone オブジェクトを返す
unknown
DateTimeZone DateTimeZone::__construct ( string $タイムゾーン )
新しいDateTimeZoneオブジェクトを返します。 失敗した場合はFALSEを返します。
タイムゾーンには、タイムゾーンを表す正式な(例:Europe/Prague)あるいは略称(例:CET)を指定します。
timezone_name_from_addr 
略称からタイムゾーン名を返す
unknown
指定したタイムゾーンの略称からタイムゾーン名を返します。 失敗した場合はFALSEを返します。
オプションの第2引数GMTからのオフセット秒数のデフォルトは「-1」で、タイムゾーンの略称に対応するタイムゾーンのうち最初に見つかったものを返します。 それ以外の場合は指定したオフセットを探し、見つからなかった場合は、他のオフセットも含めて最初に見つかったものを化します。
オプションの第3引数isdstには、夏時間の識別子を指定します。 タイムゾーンの略称が見つからなかった場合は、GMTからのオフセット秒数とisdstをもとにタイムゾーンを探します。
<?
# 略称からタイムゾーン名を取得する
echo timezone_name_from_abbr("CET") . "\n";
echo timezone_name_from_abbr("", 3600, 0) . "\n";
/*
Europe/Berlin
Europe/Paris
*/
?>
timezone_version_get 
timezonedbの現在のバージョンを取得
unknown
timezonedbの現在のバージョン番号を返します。
<?
echo timezone_version_get(); // 2009.7
?>