-2

を使用して月を取得しようとしていますdate

$year= 2012;
$mon = date( 'F', mktime(0, 0, 0, $month,$year) );

上記のコードスニペットでは、$monthは動的にインクリメントされます。でwhileループを使用しました$month++。しかし、それは私に正しい日付を与えません。

たとえば$month=5、最初に与えたとしましょう。その後、までインクリメントされます$month=12。次に、出力は次のようになります。

May
June
July... 

ただし、出力は次のとおりです。

November
December
January.....

どうしてこれなの?私はここで何か間違ったことをしていますか?

4

3 に答える 3

6

$date パラメータを忘れました。mktime の正しい構文は次のとおりです。

mktime($hour,$minute,$second,$month,$day,$year);

あなたの例では、 $year は「日付」と見なされます

のようなものを試してください

mktime(0,0,0,$month,1,$year);
于 2012-07-31T09:05:21.440 に答える
3

mktime:にエラーがありますmktime(0, 0, 0, $month, 1,$year)。5 番目の引数がdayであるため、year

于 2012-07-31T09:05:38.083 に答える
2

あなたの問題はこれらの線から生じます:

$year= 2012;
$mon = date( 'F', mktime(0, 0, 0, $month,$year) );

正確には、mktimeコマンドから。正確な構文は次のとおりです。mktime($ hour、$ minutes、$ second、$ month、$ day、$ year);

5番目のパラメーターとして$yearを指定したため、「year」ではなく「day」として解釈されます。したがって、月を5に設定すると、月5 +2012日が得られます。これは、5月の1日が2011日だけ増加し、その結果が11月になることを意味します。

目的の結果を得るには、代わりに次の行を使用する必要があります。

$mon = date( 'F', mktime(0, 0, 0, $month,1,$year) );

そうすれば、希望の月を取得できます(そして、その日は常に今月の最初の日です。したがって、計算に干渉することはありません。

于 2012-07-31T09:13:27.343 に答える