- ベストアンサー
日付の計算方法(1970年以前のデータを含む)
過去の日付のデータがあって、今日までのの経過年月日を求めたいです。 (例) データ 1980年1月5日 本日が2004年2月6日なので、求めたい結果は24年1月1日 日付のデータには1970年以前のデータも含まれるためタイムスタンプ(グリニッジ標準時)が使用できません。 関数などを使って簡単に求める方法はあるのでしょうか? どのようにしたら求められるかわかる方教えていただけませんでしょうか。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
年と月だけ得られれば良いという事であれば、それほど難しくないです。 <?php $today = getdate(); print("本日 $today[year]年$today[mon]月$today[mday]日\n"); $data_y = 1980 ; $data_m = 1 ; $data_d = 5 ; print("データ $data_y年$data_m月$data_d日\n"); if ( $today[mday] < $data_d ){ $data_m ++ ; } if ( $today[mon] < $data_m ){ $data_y ++ ; } $kekka_y = $today[year] - $data_y ; $kekka_m = $today[mon] - $data_m ; print("結果 $kekka_y年$kekka_m月\n"); ?> こんな感じでいかがですか?
その他の回答 (2)
- GuruGuru22
- ベストアンサー率51% (177/346)
いまひとつ、どういう結果が 欲しいのかわかりませんが、 PEARのDate_Calc使えば require_once('Date/Calc.php'); print Date_Calc::dateDiff(6,2,2004,5,1,1980); で、日付の差、8798日が求められます。 参考になるかわかりませんが。
お礼
回答ありがとうございます。 今回は No.2 で教えていただいた方法で実現するようになりましたが、「PEAR」という存在は知りませんでした。(今回初めてPHPを使用するので、本で調べながらのコーディングです。)今後の参考にさせていただきたいと思います。ありがとうございました。
- arukamun
- ベストアンサー率35% (842/2394)
情報が少なくてプログラム化できません。 例では、データの年、月、日が全て本日より小さい値でしたので、結果ができましたが、どれか一つでもデータの方が大きかったらどうしますか? (例) データ 1980年1月10日 本日 2004年2月6日 この場合、結果は何になりますか? 補足してください。
補足
(例) データ 1980年1月10日 本日 2004年2月6日 ご質問いただいた例の場合、 23年10月26日という結果がほしいです。 (実際に使用するのは日にちを切捨てし、「23年10月」なんですが) これでおわかりいただけますか?
お礼
早速の回答ありがとうございます。 やはり関数を使って簡単にというのはないようですね。 ロジックも大変参考になり、欲しいデータを算出できるようになりました。 ありがとうございました。