OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

1ヶ月後の日付を出力したい

  • 困ってます
  • 質問No.165919
  • 閲覧数1124
  • ありがとう数6
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 74% (29/39)

1ヶ月後の日付を出力したいのですが
$tomorrow = mktime (0,0,0,date("m")+1,date("d"),date("Y"));

phpマニュアルで上記のようなものを使って、
1970年1月1日からの通算秒を得ることが出来ましたが
それとlocationtimeを使ってどうにか1ヶ月後の年月日を出せるようなのですが…

やり方がどうしても分かりません。
いろいろ試したんですが、どつぼにハマって行くだけで…。


すみません、誰か助け舟を出して下さい

お願いします
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 58% (114/195)

LocationTimeという関数は知りませんがUNIXtimeまで取得できているんであれば後もう少しです。

UNIXtime形式から変換する関数は既に使われている関数であるdate()関数です。
マニュアル(参考URL)を良く読んでみてください。第2引数が省略可能であり、省略した場合は現在時刻が使用される、とありますがここにUNIXtimeを引数として与えるとUNIXTimeの時間を第一引数にしたがってフォーマットします。
つまり上で取得された$tomorrowを第2引数に与えてやれば良いのです。

$tomorrow = mktime (0,0,0,date("m")+1,date("d"),date("Y"));

を実行後

$next_month = date("Y-m-d", $tomorrow);

としてやれば$next_monthに"yyyy-m-dd"の書式で来月の日付が取得できる「かもしれません」

ここからが重要です。なぜ「かもしれない」のでしょうか?
重要なのは「一月後の日付」という言葉の定義です。
「次の月」というのは12月を除いて現在の月に1を足した月になります。
ですが「一月後」というのは次の月と同義ではありません。
考えてみてください。たとえば今日がx年1月30日だったとしましょう。
一月後の日というのはいつでしょう?月に1を足した日?
やってみましょう。X年2月30日・・・さてカレンダーを見てみましょう。どの年のカレンダーを見ても2月の30日という日は存在しませんよね?
要するにこういうことが起こってしまうわけです。
実際には2月30日をmktime関数に与えてやれば融通を利かせてくれるため閏年では3月1日、そうでなければ3月2日になると思います(実際に試してません。環境が手元に無いので・・・申し訳ない)
これは別に1月に限った話ではなくだいたいの奇数月では31日まであるため31日に実行されると次の月は30日までなため2月後の1日が「一月後の日付」として帰ってくる事になります。

要するに「一月後の日付」、という言葉の定義を厳密に定義してあげなければどこかで感覚的におかしい結果が返る事になります。というわけでまずは「一月後の日付」というものを明確に定義する事が必要でしょう。
お礼コメント
masaichi1212

お礼率 74% (29/39)

長文を書いて頂き本当にありがとうございました!!

ちゃんと隅から隅まで読ませてもらいました。

まずはじめにお詫びを…
Unixからの時間取得はlacationtimeではなくlacaltimeの間違いでした。

date関数でunixスタンプタイムをY-M-Dに変換できるんですね。
知りませんでした…f(^_^;)

>実際には2月30日をmktime関数に与えてやれば融通を利かせてくれるため閏年では3月1日、そうでなければ3月2日になると思います

はい、ご推測の通りの日付が返ってきました。
月の定義はすでに決まっているので、それを本文の方にしっかり書くべきでしたね
反省。。。

これでようやく前進できそうです。
ありがとうございました。
投稿日時 - 2001-11-12 09:56:56
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル7

ベストアンサー率 46% (12/26)

目的がわからないので適しているかどうかわかりませんが、 3.0.12以降のPHPで利用できる関数に strtotime というのがあります。 % cat strtotime.php #!/usr/bin/php -q <? echo date("Y-m-d", strtotime("+1 month"))."\n"; ?& ...続きを読む
目的がわからないので適しているかどうかわかりませんが、
3.0.12以降のPHPで利用できる関数に strtotime というのがあります。

% cat strtotime.php
#!/usr/bin/php -q
<?
echo date("Y-m-d", strtotime("+1 month"))."\n";
?>

% php strtotime.php
2001-12-10

こんな強力な関数が何の準備もせずに利用できるのには驚きですね。
来週の木曜日とかも可読性を保ったままで記述できるんですよね。
お礼コメント
masaichi1212

お礼率 74% (29/39)

たったこれだけでも取得できるんですね。
なにやら頭の中がこんがらがっていたのにすっきりしてしまいました。

この方法は使えますね。。。
もし今回使わなくてもいずれ絶対に使う日がきます。

本当に助かりました♪
ありがとうございました。

あと、自宅PCが壊れているために返事が遅れたことをお二方に
お詫び申し上げます。


またなにかありましたら宜しくお願いします!
投稿日時 - 2001-11-12 10:00:09
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ