【问题标题】:Show date ranges for each month显示每个月的日期范围
【发布时间】:2013-11-09 09:35:54
【问题描述】:

我正在尝试显示每个月的日期范围。

例如,

2013 年 11 月 -- 2013-11-01 - 2013-11-30 //11 月

2013 年 12 月 -- 2013-12-01 - 2013-12-31 //12 月

2013 年 1 月 -- 2014-01-01 - 2014-01-31 //2014 年 1 月

等到 2014 年 12 月

PHP 代码:

$currentmonth = date('n');
$monthstoloop = $currentmonth + 13;

for ($m=$currentmonth; $m<=$monthstoloop; $m++) {
$month = date('F', mktime(0,0,0,$m, 1, date('Y')));
$year = date('Y', mktime(0,0,0,$m, 1, date('Y')));
echo $month."  ".$year;
}

我没有找到在年份旁边显示月份范围的方法。请提出建议。

【问题讨论】:

    标签: php date


    【解决方案1】:

    使用格式参数t获取当月的最后一天:

    $start = new DateTime('2013-10-01');
    $end = new DateTime('2014-05-01');
    
    while ($start < $end) {
        echo $start->format('M Y = Y-m-d - Y-m-t'), "\n";
        $start->modify('+1 month');
    }
    

    Demo.


    更新了你的例子:

    $currentmonth = date('n');
    $monthstoloop = $currentmonth + 13;
    for ($m=$currentmonth; $m<=$monthstoloop; $m++) {
        $time = mktime(0,0,0,$m,1,date('Y'));
        echo date('F Y = Y-m-d - Y-m-t', $time), "\n";
    }
    

    【讨论】:

    • 太棒了。谢谢格拉维克。
    • +1 实际回答了这个问题:)
    • PrithvirajMitra:np,很高兴我能帮上忙。 @AmalMurali:我看到我们的想法相同,我们的回答相同;)
    • @Glavić: This 可能是相关的:P
    【解决方案2】:

    使用 DateTime 类更容易:

    $start = new DateTime('2013-11-01');
    $end = new DateTime('2014-12-01');
    
    while ($start <= $end) {
        echo $start->format('F Y -- Y-m-d - Y-m-t').'<br/>';
        $start->modify('+1 month');
    }
    

    输出:

    November 2013 -- 2013-11-01 - 2013-11-30
    December 2013 -- 2013-12-01 - 2013-12-31
    January 2014 -- 2014-01-01 - 2014-01-31
    February 2014 -- 2014-02-01 - 2014-02-28
    March 2014 -- 2014-03-01 - 2014-03-31
    April 2014 -- 2014-04-01 - 2014-04-30
    May 2014 -- 2014-05-01 - 2014-05-31
    June 2014 -- 2014-06-01 - 2014-06-30
    July 2014 -- 2014-07-01 - 2014-07-31
    August 2014 -- 2014-08-01 - 2014-08-31
    September 2014 -- 2014-09-01 - 2014-09-30
    October 2014 -- 2014-10-01 - 2014-10-31
    November 2014 -- 2014-11-01 - 2014-11-30
    December 2014 -- 2014-12-01 - 2014-12-31
    

    Demo!

    【讨论】:

    • 不错的一个 Amal 但由于某种原因我不能使用 datetime 类。非常感谢您的努力。
    • @PrithvirajMitra:真糟糕。无论如何,祝你的项目好运。 :)
    【解决方案3】:

    一年只有12个月。

    为什么不对它们进行硬编码并在二月摆弄一下

    似乎是一个简单快捷的解决方案

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多