PHPのdate関数の使い方・タイムゾーンやサンプルコードなど

PHP

PHPのdate関数の使い方とサンプルコードを書いています。
PHPで使用されるタイムゾーンについても記載しています。

PHPのdate関数についての公式ドキュメントは下記になります。
date関数についての公式ドキュメント

PHPのdate関数とは?

PHPのdate関数は日付文字列を返してくれる関数です。
2つの引数を渡すことができます。

date("[フォーマット(必須)]", "[タイムスタンプ(渡さなくても良い)]");

第2引数が渡されなかった場合は、現在日時で日付文字列を作成します。

フォーマットのみ指定する

フォーマットのみ指定した場合です。
例えば、下記のようにすると、現在の年月日が返ってきます。

date("Y/m/d"); // 結果 2021/11/02 など

“Y”,”m”,”d”は返してほしい文字列のフォーマットです。
それぞれの文字に、下記のように意味があります。

  • “Y”は年の4桁の数字を返す
  • “m”は月の数字を返す。先頭に0を付けて2桁にする。
  • “d”は日の数字を返す。先頭に0を付けて2桁にする。

これを組み合わせて、”Y/m/d”とすることで、現在年月日で変換されて”2021/11/02″が返ってきます。
日付を区切るのを漢字で行いたい場合は、”Y年m月d日”と指定します。
そうすると、”2021年11月02日”という形で返ってきます。

タイムスタンプを指定する

タイムスタンプを指定した場合です。
PHPのタイムスタンプは1970年1月1日から秒数をカウントした値です。

指定日付のタイムスタンプはstrtotime関数を使うと、取得することができます。
例えば、strtotime("2021/11/10")とすると、タイムスタンプとして”1636502400″が返ってきます。
strtotime("+1 day")とすると、現在日から+1日した明日のタイムスタンプが返ってきます。

strtotimeについては公式の下記記事に書いています。
strtotime関数についての公式ドキュメント

このタイムスタンプをdate関数の第2引数に指定すると、指定したタイムスタンプを使用して、日付文字列にフォーマットして返します。

例えば、3日後の年月日を文字列として、取得したい場合は下記のようになります。

echo date("Y/m/d", strtotime("+3 day")); // 結果 2021/11/05 (2021/11/02に実行)

date関数のよく使うフォーマット一覧

よく使いがちなフォーマットのみ、まとめています。
その他、使えるフォーマットは公式のこちらにまとまっています。

フォーマット文字列 変換値 例や範囲
Y 年の4桁の数字を返す 2021
m 月の数字を返す。先頭に0を付けて2桁。 01 – 12
d 日の数字を返す。先頭に0を付けて2桁。 01 – 31
H 時の数字を返す。24時間単位、先頭に0を付けて2桁。 00 – 23
i 分の数字を返す。先頭に0を付けて2桁。 00 – 59
s 秒の数字を返す。先頭に0を付けて2桁。) 00 – 59
y 年の2桁の数字を返す 21
n 月の数字を返す。0をつけない 1 – 12
j 日の数字を返す。0をつけない 1 – 31

date関数を使用した時のタイムゾーンの設定について

タイムゾーンは地域全体で使われている標準時刻のことです。
日本やアメリカで時差があるように、それぞれの地域で、現在の時刻が変わってきます。

PHP内部で時刻を表示するときに、時間帯を設定することで、日本時間としてdate関数で値を取得できるようになります。
PHPのデフォルトの設定はUTC(協定世界時)となっています。

現在PHPで使用されているタイムゾーンを取得したい場合は、下記の関数で取得することができます。

echo date_default_timezone_get(); // UTC

標準のUTC状態で、日本の午前10時00分00秒にdate関数を使用して、時間を取ってみると下記のようになります。

echo date('H:i:s'); // 01:00:00

この時間から+9時間された時間が日本時間です。
日本時間を使用したい場合は、タイムゾーンを設定する必要があります。

php.iniの下記の項目に”Asia/Tokyo”を入れると、日本時間のJSTが使用できます。

date.timezone = "Asia/Tokyo"

php.iniに設定せずに、コード上で設定したい場合は、ini_set関数を使用して設定することが可能です。

ini_set('date.timezone', 'Asia/Tokyo');

date関数を使ったサンプルコード6つ

date関数を使用したサンプルコードを載せています。

年月日を取得する

年月日を取得する場合です。”Ymd”を使用して取得することができます。

$nowDate = date('Y/m/d');
echo $nowDate; // 2021/11/05

年月日時分秒を取得する

年月日時分秒を取得する場合です。
年月日の”Ymd”に”His”時分秒を足して、取得することができます。

$nowDate = date('Y/m/d H:i:s');
echo $nowDate; // 2021/11/05 09:29:19

30日後の年月日を取得する

30日後の年月日です。
strtotime関数で+30日を指定して取得します。

$nowDate = date('Y/m/d', strtotime('+30 day'));
echo $nowDate; // 2021/12/05 (2021/11/05に実行)

30日前の年月日を取得する

30日前の年月日です。
strtotime関数で-30日を指定して取得します。

$nowDate = date('Y/m/d', strtotime('-30 day'));
echo $nowDate; // 2021/10/06 (2021/11/05に実行)

来週の年月日を取得する

来週の年月日です。
strtotime関数で+1週間を指定して取得します。

$nowDate = date('Y/m/d', strtotime('+1 week'));
echo $nowDate; // 2021/11/12 (2021/11/05に実行)

来年の年月日を取得する

来週の年月日です。
strtotime関数で+1年を指定して取得します。

$nowDate = date('Y/m/d', strtotime('+1 year'));
echo $nowDate; // 2022/11/05 (2021/11/05に実行)

コメント

タイトルとURLをコピーしました