获取截至今天PHP的月份列表


get a list of months that have passed upto todays PHP

我正在建立一个博客档案,我需要列出这些年的历史月份,例如,今天是8月22日,所以我的档案应该显示,

  • 八月
  • 七月
  • 六月
  • 五月
  • 四月
  • 三月
  • 二月
  • 一月

我一辈子都无法想出如何在一年中的所有月份都输出我们还没有的东西。

您应该研究一下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>

php date()函数可用于显示当前月份:

你可以这样得到当前月份:

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循环,使其反向工作。

PHP的date()非常适合这一点。

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

$month = date('n'); // Get month, 1-12
<?php
 $month=date('m');
foreach(range(12,1) as $i)
{
  if($i<=$month):    
  echo date('F',mktime(0,0,0,$i));
  echo '<br>';
  endif;
}?>