【问题标题】:get a list of months that have passed upto todays date - PHP获取到今天为止的月份列表 - PHP
【发布时间】:2012-08-17 18:55:46
【问题描述】:

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

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

我这辈子都不知道如何输出我们还没有的一年中的所有月份。

【问题讨论】:

  • 您是否要让几个月没有过去?还是几个月过去了?
  • 我认为否决票可能是因为没有告诉我们您到目前为止所做的尝试。我会用 php 的 date() 函数来做。但是到目前为止尝试了什么?!

标签: php date


【解决方案1】:

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

【讨论】:

  • 我觉得for($i=1;$i&lt;=date('n');$i++)更好!
  • @Death 是的,你是对的,使用&lt; 编写循环现在几乎是肌肉记忆:P +1 为很好的发现!
  • 谢谢,但是这个列表在 12 月 1 月 2 月 3 月 4 月 5 月 6 月 7 月,我需要输出今年所有前几个月,包括当前月份
【解决方案2】:

PHP 的 date() 非常适合。

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

$month = date('n'); // Get month, 1-12

【讨论】:

    【解决方案3】:

    您应该查看 PHP 的 DateTime class

    <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>
    

    【讨论】:

    • 闪亮的DateTime 对象的可爱用法。 +1
    【解决方案4】:
    <?php
     $month=date('m');
    
    foreach(range(12,1) as $i)
    {
      if($i<=$month):    
      echo date('F',mktime(0,0,0,$i));
      echo '<br>';
      endif;
    }?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多