twitter facebook

PHPで日付・時間の操作(現在日時・月末日・うるう年など)

PHPでの現在日時の取得は date関数を用い、年月日、時刻、曜日などは書式を指定することで整形することができます。
また、30日後の年月日を調べなどする場合は mktime関数を を用い、タイムスタンプ取得してdate関数の引数とします。

現在日時を取得

print date("Y/m/d H:i:s") ;
2012/02/08 11:37:40

現在日

print date("Y/m/d") ;
2012/02/08

現在時刻

print date("H:i:s") ;
11:37:40

30分後の時間を取得

$t1 = time()+60*30 ;
print date("H:i:s", $t1) ;
12:07:40

1日後の日付を取得

$t1 = time()+60*60*24 ;
print date("Y/m/d", $t1) ;
2012/02/09

月の日数・月末日を取得

$t1 = time() ;
print date("t", $t1) ;
29
$dt = mktime(0, 0, 0, 3, 0, 2012) ;
print date("d", $dt) ;
29

年初めからの通算日を取得("z")

$t1 = time() ;
print date("z", $t1) ;
39

曜日

曜日を英語で取得("D")

$t1 = time() ; 
print date("D", $t1) ;
Wed

曜日を英語(フルスペル)で取得("l")

print date("l") ;
Wednesday

曜日を数値で取得("w")

$t1 = time()+60*60*24 ;
print date("w") ;
3

月を英語で表示する

print date("M") ;
Feb

月を英語(フルスペル)で表示する

print date("F") ;
February

30日後の日付を取得

$t1 = time()+60*60*24*30 ;
print date("Y/m/d", $t1) ;
2012/03/09

指定日の日時を取得

$t1 = mktime(10, 15, 20, 12, 31, 2011);
print date("Y/m/d H:i:s", $t1) ;
2011/12/31 10:15:20

指定日の日付と曜日を取得

$t1 = mktime(0, 0, 0, 31, 12, 2011);
print date("Y/m/d l", $t1) ;
2011/12/31 Saturday

その他の書式

年月日の0埋めをなくす

print date("Y/n/j (D)") ;
2012/2/8 (Wed)

AM/PM を表示

$t1 = time() ;
print date("A h:i:s", $t1) ;
PM 02:18:14

日付の妥当性チェック

$c1 = checkdate(2, 29, 2012); //有効な年月日
$c2 = checkdate(2, 30, 2012); //不正な年月日
c1 は trueに、$c2 は false

うるう年(閏年)の判定

方法1
$c1 = checkdate(2, 29, 2012); //2012年はうるう年
$c2 = checkdate(2, 29, 2013);
$c1 は trueに、$c2 は false
方法2
$dt = mktime(0, 0, 0, 2, 1, 2012) ; // うるう年
$c1 = date("L", $dt) ;
$dt = mktime(0, 0, 0, 2, 1, 2013) ;
$c2 = date("L", $dt) ;
$c1 は trueに、$c2 は false

うるう年とは

うるう年は以下のように計算されるようです。
  • 西暦年が4で割り切れる年は うるう年
  • 西暦年が100で割り切れる年は 平年
  • 西暦年が400で割り切れる年は うるう年

日付・時刻を連想配列にして取得する

書式
$array = getdate([int timestamp])
備考
日時を連想配列で取得します。タイムスタンプを指定可能ですが、省略した場合は現在日時となります。
引数
timestamp 取得の対象となる日時
返り値
各値が格納された連想配列
$dt = getdate() ;
print_r($dt);
Array (
[seconds] => 45
[minutes] => 5
[hours] => 21
[mday] => 8
[wday] => 3
[mon] => 2
[year] => 2012
[yday] => 38
[weekday] => Wednesday
[month] => February
[0] => 1328702745
)
AUTHOR
@kiki
最終更新日 2018/09/17
FAVORITE good stock
LINK TAG
記法を見る