むねひろ@プログラマープログラマーの技術や経験の暴露ブログです。何か聞きたいことがあれば遠慮なくご連絡ください。munehiroPHPでフォーマットを指定して現在の日付を取得したり、加算や比較など操作する方法ツイートシェアはてブLINEPocket日付の操作というのはプログラミングを行っていればちょくちょく出てきますが、何かとやっかいです。頻繁に使わない分つい忘れてしまうんです(笑)PHPなどのプログラミングでの操作もありますが、仕様的な注意点もあります。今回はPHPで日付を扱う方法や注意点などをまとめてみます。date('Y/m/d');PHPで現在の日付を取得するのは上記のように書けばとれます。時間も取得したい場合は以下のように書きます。H:i:s');お気づきかもしれませんが、Y・・・年m・・・月d・・・日H・・・時i・・・分s・・・秒となります。大文字小文字にも意味がありますので注意してください。DateTimeクラスを使って日付を取得するのは以下のように書きます。$now->format('Y/m/d');時間も取得する場合は以下のようになります。H時i分s秒');このようにYやmの部分だけはそのままに他の部分を変更すると指定したフォーマットで取得できます。上のコードを実行すると以下のように表示されます。ように書いてもちゃんと読み込んでくれます。実行すると以下のような文字列を取得できます。H時i分s秒');のように書きます。ように日付を渡してもちゃんと読み込んでくれます。$now->format('Y/m/d');のように書くと年月日だけ出力できます。day"));のように書きます。day"));のように書きます。day"));のように書きます。するときに日付を指定するだけです。すれば30日後になります。すれば30日前になります。現在から1週間前、1週間後を取得するには以下のように書きます。week"));日付を指定して1週間前、1週間後を取得するには以下のように書きます。$date->format('Y/m/d');と書きます。現在から1ヶ月前、1ヵ月後を取得するには以下のように書きます。month"));日付を指定して1ヶ月前、1ヵ月後を取得するには以下のように書きます。$date->format('Y/m/d');と書きます。現在から1年前、1年後を取得するには以下のように書きます。year"));日付を指定して1年前、1年後を取得するには以下のように書きます。$date->format('Y/m/d');と書きます。日付の比較は注意が必要です。フォーマットが異なると同じ日付でも別物になってしまいます。使ってUNIXタイムスタンプを取得します。0時0分0秒を基準にして、基準からの経過を秒で返してくれます。"違う";}こう書けばちゃんと比較できます。○○ヵ月後という仕様は注意よく「有効期間が3ヶ月」のような仕様があります。?1ヶ月は28日,30日,31日の月があります。29日~31日の○○ヵ月後というのは注意が必要です。ここはお客さんとの話し合いで解決するしかありません。日付が存在しない場合は一律月末に合わせる。1/31の1ヵ月後は2/28とする。2/28の1ヵ月後は3/28とする。1ヶ月としないで30日とし、1/31の30日後は3/2とする。ような解決策が一般的です。祝日は変わる翌営業日を取得する場合など土曜や日曜、祝日が影響される場合があります。日曜に祝日が被った場合は翌日の月曜は振り替え休日になりますが、土曜が祝日のときにはなりません。そもそも祝日は変更されることがよくあります。PHPの標準機能では祝日を取得することは出来ません。祝日は国によって定義が変わりますし、前述したように追加されたり無くなったりします。祝日を定義されたクラスなどがネット上にたくさん転がっていますが、それにしても祝日が変更になったら修正が必要になります。僕はDBに祝日を定義するテーブルを設置して、管理システム上で祝日を登録できるようにして、それを操作できるクラスを自前で作成しています。1個作るまでは何日が祝日とか第2○曜日が・・・とか面倒でしたが一度作ってしまえば後はかなり楽になります。平成の次には対応していないのでまた祝日を使う案件が来たときにでも修正が必要ですね・・・まとめ日付の計算はややこしいですが、上記のコードさえメモしておけばあとはコピペでいけます。使いUNIXタイムスタンプを取得して比較します。あとは仕様を気をつけてシステム設計をしてください。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。PHPで現在のディレクトリを取得する方法PHPでクッキーの値を取得する方法とクッキーに値をセットする方法RECOMMENDこちらの記事も人気です。swich文についてPHP2018.10.15PHPで現在のディレクトリを取得する方法PHP2018.10.28PHPフレームワークってどれが人気なの?トレンド比較!2018年10月むねひろ現在36歳。プログラマー歴16年。高校卒業後は調理師見習いをしていたけど、不況で先が不安になり離職。その後上京しハローワークの紹介でプログラマーに。分からないことだらけで辛い日々だったけど、3年頑張ったら色々見えてきてフリーランスに。面白そうなシステム開発をもっとしたい。