PHPメモ025:カレンダー関連の関数
PHPではカレンダーとして主にグレゴリウス暦、ユリウス積算日(ユリウス日、ユリウス通日)、Unixタイムスタンプを使用する。
ユリウス積算日は紀元前4713年1月1日からの日数で、2日の日付の差を調べる際などには便利である。
int gregoriantojd(<月>, <日>, <年>) グレゴリウス暦をユリウス積算日に変換する。
array cal_from_jd(<ユリウス積算日>, <カレンダー>) ユリウス積算日を指定したカレンダーに変換する。第2引数は CAL_GREGORIAN がグレゴリウス暦。 戻り値はカレンダーの情報を含む配列。
サンプルーコード
$jd = gregoriantojd(5, 22, 2012); // スカイツリー開業予定 echo $jd . "\n"; print_r(cal_from_jd($jd, CAL_GREGORIAN));サンプルコードの出力
Array ( [date] => 5/22/2012 [month] => 5 [day] => 22 [year] => 2012 [dow] => 2 [abbrevdayname] => Tue [dayname] => Tuesday [abbrevmonth] => May [monthname] => May )
int unixtojd([<Unixタイムスタンプ>]) Unixタイムスタンプをユリウス積算日に変換する。引数が省略された場合は現在の日時を使用する。
int jdtounix(<ユリウス積算日>) ユリウス積算日をUNIXタイムスタンプに変換する。
サンプルーコード
$ut = strtotime('2012/5/21'); // 金環日食 echo $ut . "\n"; $jd = unixtojd($ut); echo $jd . "\n"; dispArray(cal_from_jd($jd, CAL_GREGORIAN)); $ut2 = jdtounix($jd); echo $ut2 . "\n";サンプルコードの出力
1337526000 2456069 [date]=>5/21/2012,[month]=>5,[day]=>21,[year]=>2012,[dow]=>1,[abbrevdayname]=>Mon,[dayname]=>Monday,[abbrevmonth]=>May,[monthname]=>May, 1337558400
最後のタイムスタンプの値は最初のUnixタイムスタンプの値よりちょうど9時間(60*60*9=32400秒)、日本時間とGMTの時差の分大きい。
これはユリウス積算日には時刻の情報がないので、3行目のUnixタイムスタンプからユリウス積算日への変換でローカル時間に関する情報が失われたため。
mixed jddayofweek(<ユリウス積算日>[, <モード>]) ユリウス積算日から曜日を返す。モードで返す値の形式を指定する。
モードに指定できる値は下表。
モード | 説明 |
---|---|
0 | 日曜日を0とする数値(デフォルト) |
1 | 英語の曜日(フルスペル) |
2 | 英語の曜日(3文字の省略形) |
string jdmonthname(<ユリウス積算日>, <モード>) ユリウス積算日から月の名前を返す。モードで返す値の形式を指定する。
モードに指定できる値は下表。
モード | 説明 |
---|---|
0 | 英語の月名(3文字の省略形) |
1 | 英語の月名(フルスペル) |
サンプルーコード
$jd = gregoriantojd(7, 27, 2012); // ロンドン五輪 echo jddayofweek($jd, 0) . "\n"; echo jddayofweek($jd, 1) . "\n"; echo jdmonthname($jd, 0) . "\n"; echo jdmonthname($jd, 1) . "\n";サンプルコードの出力
5 Friday Jul July
int cal_days_in_month(<カレンダー>, <月>, <日>) 指定したカレンダーと月についてつきの日数を返す。第1引数は CAL_GREGORIAN がグレゴリウス暦。
bool checkDate(<月>, <日>, <年>) 指定した日付がグレゴリウス暦で妥当かを調べる。
サンプルーコード
echo cal_days_in_month(CAL_GREGORIAN, 2, 2012) . "\n"; echo cal_days_in_month(CAL_GREGORIAN, 2, 2013) . "\n"; echo "\n"; echo (checkdate(2, 29, 2012) ? '有効' : '無効') . "\n"; echo (checkdate(2, 29, 2013) ? '有効' : '無効') . "\n";サンプルコードの出力
29 28 有効 無効
« デュナミス-ボスディンクリア #FF11 | Main | 新潟開幕2連敗、磐田は今季初勝利 #jleague #albirex #jubilo »
「PHP」カテゴリの記事
- PHPStorm 2018.1.7 に更新(2018.12.09)
- LaravelでHello World とか諸々(2015.05.13)
- Laravel4のインストール(2015.05.06)
- PHPメモ051:includeとrequireの使い分け(2015.06.19)
- CakePHPのインストール(2015.06.14)
TrackBack
TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/54243229
Listed below are links to weblogs that reference PHPメモ025:カレンダー関連の関数:
« デュナミス-ボスディンクリア #FF11 | Main | 新潟開幕2連敗、磐田は今季初勝利 #jleague #albirex #jubilo »
Comments