1

私はブログ アーカイブを作成しています。過去の月から何年かを一覧表示する必要があります。たとえば、今日は 8 月 22 日なので、アーカイブには次のように表示されます。

  • 8月
  • 7月
  • 六月
  • 5月
  • 4月
  • 行進
  • 2月
  • 1月

私は、まだ持っていない年のすべての月を出力する方法を、私の仕事の生涯にわたって理解することはできません.

4

4 に答える 4

4

PHP のDateTime クラスを調べる必要があります。

<ul>
<?php
$dateTime = new DateTime();
do {
    $dateTime->modify('+1 month');
    echo '<li>' . $dateTime->format('F') . "</li>\n";
} while ($dateTime->format('m') < 12);
?>
</ul>

あなたの質問はあまり明確ではありませんでしたが、あなたの最新のコメントによると:

ありがとう、でもこのリストは 12 月 1 月 2 月 3 月 4 月 5 月 6 月 7 月です。今月を含む今年の前の月をすべて出力する必要があります。

ここで行ったこととは正反対のことが必要です。

<ul>
<?php
$dateTime = new DateTime();
echo '<li>' . $dateTime->format('F') . "</li>\n";
$dateTime->modify('-1 month');
while ($dateTime->format('m') != 12) {
    echo '<li>' . $dateTime->format('F') . "</li>\n";
    $dateTime->modify('-1 month');
};
?>
</ul>
于 2012-08-22T11:11:10.373 に答える
3

phpdate()関数を使用して、現在の月を表示できます。

次のように現在の月を取得できます。

echo date('n'); // Outputs 8 for August.

これは、次のような単純なループを使用できることも意味します。

for($i=1;$i<=date('n');$i++)
{
    echo date('F', mktime(0, 0, 0, $i, 0, 0);
}

参考までに、date('F')August のように完全な月名を出力します。

編集:mktime()関数はユーザーのタイムゾーンに関連付けられています。(私のように) 0:00 のタイムゾーンではないため、間違った月を取得している可能性があります。数か月後なので、これは簡単な修正です。

<?php
    for($i=date('n');$i>0;$i--)
    {
        echo date('F', mktime(0, 0, 0, ($i), 2, date('Y')))."<br>";
    }
?>

また、逆に動作するように for ループを修正しました。

于 2012-08-22T11:05:44.300 に答える
0

PHPdate()はこれに最適です。

http://php.net/manual/en/function.date.php

$month = date('n'); // Get month, 1-12
于 2012-08-22T11:07:08.473 に答える
0
<?php
 $month=date('m');

foreach(range(12,1) as $i)
{
  if($i<=$month):    
  echo date('F',mktime(0,0,0,$i));
  echo '<br>';
  endif;
}?>
于 2012-08-22T11:12:37.097 に答える