首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取到今天为止的月份列表- PHP

获取到今天为止的月份列表- PHP
EN

Stack Overflow用户
提问于 2012-08-22 11:01:15
回答 4查看 2.9K关注 0票数 1

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

  • 八月
  • 七月
  • 六月
  • 可能
  • 四月
  • 三月
  • 二月
  • 一月

我无法用一生的时间来完成我们一年中还没有完成的所有月份的产出。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-22 11:11:10

您应该查看PHP的DateTime类

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

你的问题不是很清楚,但根据你最近的评论:

谢谢,但这份清单列在十二月、二月、三月、四月、五月、六月、七月,我要把今年的所有月份,包括当月,都列出来。

你想要和我在这里所做的完全相反:

代码语言:javascript
复制
<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>
票数 4
EN

Stack Overflow用户

发布于 2012-08-22 11:05:44

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

你可以得到这样的当月:

代码语言:javascript
复制
echo date('n'); // Outputs 8 for August.

这也意味着您可以使用这样一个简单的循环:

代码语言:javascript
复制
for($i=1;$i<=date('n');$i++)
{
    echo date('F', mktime(0, 0, 0, $i, 0, 0);
}

作为参考,date('F')输出8月一样的月份全名。

编辑:mktime()函数绑定到用户时区,您可能会得到错误的月份,因为您不在0:00时区(就像我一样)。由于您只是在几个月之后,这是一个简单的解决办法:

代码语言:javascript
复制
<?php
    for($i=date('n');$i>0;$i--)
    {
        echo date('F', mktime(0, 0, 0, ($i), 2, date('Y')))."<br>";
    }
?>

我还修改了for循环,使其反向工作。

票数 3
EN

Stack Overflow用户

发布于 2012-08-22 11:07:08

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

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

代码语言:javascript
复制
$month = date('n'); // Get month, 1-12
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12071635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档