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に実行)
コメント