0

特定のタイムスタンプから始めて、月から月へジャンプしようとしていますが、8 月からジャンプすると、9 月は常にスキップされます。8 月 31 日 (1346389200) から開始して 1 か月ジャンプ:

strtotime('+1 month', 1346389200);

1349067600 が生成されます - これは 10 月 1 日です。計算の開始日がない場合に strtotime が間違いを犯すことについてすべて読んだことがありますが、これには何が問題になるのでしょうか? ありがとう

4

2 に答える 2

2

8 月 31 日の 1 か月後は 9 月 31 日ですが、存在しないため、php は結果を 10 月 1 日に強制します。したがって、現在の月を 1 日目に強制する必要があります (もちろん、年と月だけが必要な場合)。

strtotime('+1 month',strtotime(date("Y-m-1",1346389200)));

ただし、php >5.3 を使用する場合は、より信頼性の高いDateTimeクラスとメソッドを使用できます。

于 2012-09-18T20:51:34.897 に答える
1

おそらく、タイムスタンプとstrtotimeこの比較には使用しないでください。夏時間、うるう年などの問題が発生します。これをより徹底的に行うには、DateTimeおよびDateIntervalクラス/関数を使用するのが最適です。

http://php.net/manual/en/datetime.add.php

于 2012-09-18T20:49:57.620 に答える