忘れたら読みたいPHPの日付(date)メソッド・使い方まとめ

deruta
書いた人 deruta
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

よく忘れるPHPの日付(date)に関するメソッドや使い方についてまとめました。

フォーマット

1. 日付の取得

今回扱うのは、date()関数です。

date()型 日付、時刻を取得する。
Y(4桁西暦)やm(分)など、記号で指定したものだけを表示する。
date(‘YYYY-mm-dd’)

date関数を扱う際の注意点は、LAMP環境という言葉で示される「TIME」「DATE」「DATETIME」などの型に対する知識が必要になることです。

DATETIME 日付+時刻を格納する 2016-11-15 00:00:00
DATE 日付を格納する 05-06
TIME UNIX時刻を格納する 11:11:10

WEBアプリケーションを作る際にデータベースは欠かせません。

異なった形式で登録しようとしても登録できないので、「いつまでもWEBアプリができない…」とならないように、
データ型には常に注意しましょう!

2. 基本形

基本の形は、date(“Y/m/d”)の形で、年月日や時分秒の対応は以下の通りです。

date(“Y-M-D”) 2016-Nov-Tue
date(“y-m-d”) 16-11-15
date(“H:m:s”) 20:11:10

Mは、大文字にすると0埋めで月を表示してくれ、Yは、大文字にすると4桁の西暦表示をしてくれます。

ただし、dは小文字だと日付、大文字だと曜日を表しますので要注意です!

比較

過去の日付を出す

// 現在日付から減らした日付の取得
echo "1日前" . date("Y/m/d", strtotime("-1 day" ));
echo "1ヶ月前" . date("Y/m/d", strtotime("-1 month"));
echo "1年前" . date("Y/m/d", strtotime("-1 year" )); 
echo "1週間前" . date("Y/m/d", strtotime("-1 week" ));

過去の日付を出す

[

// 現在日付から加えた日付の取得 
echo "1日後" . date("Y/m/d", strtotime("+1 day" )); 
echo "1ヶ月後" . date("Y/m/d", strtotime("+1 month")); 
echo "1年後" . date("Y/m/d", strtotime("+1 year" )); 
echo "1週間後" . date("Y/m/d", strtotime("+1 week" ));

曜日の取得

PHPの曜日は、0(日曜日)~6(土曜日)です。
返り値は数字なので、配列で曜日名を用意してあげる必要があります

//曜日を表示する

$date_bk = date(w, strtotime("2007/12/20")); // 4(金曜日)
$date_jp = array("日","月","火","水","木","金","土");
echo $date_jp($date_bk); // "金曜日"

$date_jp = array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
echo $date_jp($date_bk); // "土曜日"

時間表示を変更する

12時間 24時間
0埋め必要 h H
0埋めしない g G

※12時間表記の際にAM/PM表記が必要な時は、a/Aを使う。

date(a h, "2016/11/12 3:00"); //am 03:00
date(A h, "2016/11/12 3:00"); //AM 03:00
date(a g, "2016/11/12 3:00"); //am 3:00
date(A g, "2016/11/12 3:00"); //AM 3:00
date(H, "2016/11/12 3:00"); //3:00
date(G, "2016/11/12 3:00"); //15:00

計算

srttotime()

最後に扱うのが、特定の日時からの加算や減算。
date()での結果は、必ずstring型になり、string型のままでは日付計算できません。

この場合に役立つのが、srttotime()関数です。

strtotime(第一引数、第二引数)という形式になっていて、
第一引数には足したい・減らしたい時間、第二引数には計算のもととなる日付を入れます。

例えば、今から1年後であれば、

$starts = date("Y", strtotime('+1 year', $_SERVER['REQUEST_TIME']));

で年数を求められます。

今までのクリスマスが土日だった数をカウントする

$this_year = date("y");
$starts = date("y-m-d");
$riaju=0;

for($i = 0; $i < $this_year; $i++){
 $christ_youbi = date("w", $starts);
 echo $christ_youbi;
 
 if ($christ_youbi = 5){
  $riaju = $riaju + 1;
 }
 $starts = date(strtotime('+1 year', $starts));
}
echo $riaju;

曜日を表示しない場合、wを曜日名に変換したりDを使用するより、数字のほうがエラーなく使用することが可能です。

関連記事


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

deruta

deruta

都内の小さい会社でシステム企画の仕事に携わっています! いわゆる「何でも屋」として、またphpを書く1エンジニアとして。役立つ情報の発信に努めています!