//基準日「2016-02-15」を作成して、3日後の日付を求めます
$date = new DateTime("2016-02-15");
$date->modify('+3 days');
//→2016-02-18
echo $date->format('Y-m-d');
//基準日「2016-02-15」を作成して、10日前の日付を求めます
$date = new DateTime("2016-02-15");
$date->modify('-10 days');
//→2016-02-05
echo $date->format('Y-m-d');
上記のようにして、modifyを使用すれば、簡単に、n日後、n日前の日付を求めることができます。
modifyで、日付の計算として使えるものは、以下のものがあります。
年 : year
月 : month
週 : week
日 : day
サンプルコードでは、「echo $date->format('Y-m-d')」のように日付を出力しましたが、「Y-m-d」の部分を変更すると、いろいろな日付フォーマットで出力できます。例えば、「2016年(西暦4桁表示)」or「16年(西暦2桁表示)」、「2月(ゼロ埋めなし)」or「02月(ゼロ埋めあり)」など。
こちらのサイトは、日付フォーマットのリファレンスとして参照できます。
日付計算において注意が必要なポイントは、先月計算・翌月計算です。
//翌月計算例 問題発生パターン
//基準日(2016-03-31)を作成して、1ヶ月後の日付を求めます
$date = new DateTime("2016-03-31");
$date->modify('+1 month');
//→2016-05-01
echo $date->format('Y-m-d');
「2016-03-31」の1ヶ月後が、「2016-05-01」と計算されてしまいます。これは、「2016-03-31」の1ヶ月後が「2016-04-31」と計算され、4月は30日までしか存在しないため、+1して「2016-05-01」になってしまっているという理屈です。
こちらのサイトでは、この問題についての解説および対策法を、丁寧に解説しています。
2018年03月22日(木)17:00~18:30 AP品川 9階 にて「スマホアプリの開発プロセスについて~実は重要なサーバーサイドの開発と、Laravel(PHP) と Rails(Ruby)~」と題したセミナーを開催しました。 当日は、会場の様子をWebで中継し 遠隔地等ご来場出来ない方にもご参加頂きました。お陰様で、盛況のうちに終了することができました。ありがとうございました。 講...
OSS×Cloud ACCESS RANKING