0

2つの日付の間にある場合に特定の日を返す関数を作成します...mktimeを使用しようとしましたが、12月を返し続けますか?

基本的に、私はこれを行おうとしています:

$now = date('F d, Y');

if($now [is Between July of last year and January of next year] ) {

  //Output last day of January in this year

} elseif($now [is Between January of this year and July of this year]) {

  //Output last day of July for next year

}

mktimeとstrtotimeのどちらを使用する必要があるのか​​少し混乱していますか?来年の1月を決めるために、以下を試してみましたが、2012年12月に戻ってきましたか?

$jan = date("F,Y", mktime(0, 0, 0, 1, 0, $year+1));
4

3 に答える 3

4

2012年1月の0日目は、実際には2011年12月31日です。

PHPの月は1ベースです。試す

$jan = date("F,Y", mktime(0, 0, 0, 1, 1, $year+1));
                                      ^--- 1st, not 0th

代わりは。

于 2012-01-17T17:40:24.613 に答える
1

dayパラメーターは0ではなく1にする必要があります。詳細については、 http://php.net/manual/en/function.mktime.phpを参照してください。

date("F,Y", mktime(0, 0, 0, 1, 1, $year+1));
于 2012-01-17T17:42:58.743 に答える
0

dayパラメータは次の代わりに使用するmktime必要があります:10

mktime(0, 0, 0, 1, 1, $year+1);

それ以外の場合は、「1月0日」と見なされ、「1月1日から1日を引いた日」=「前年から12月31日」に変換されます。

この動作を実際に使用して、次のように日付に日(または実際には何でも)を追加および減算できます。

mktime(0, 0, 0, 1, 67, 2012); //returns the correct date for the 67th day of 2012
于 2012-01-17T17:42:49.040 に答える