【问题标题】:Get previous month date range获取上个月的日期范围
【发布时间】:2012-01-01 18:57:31
【问题描述】:

我需要帮助以下列格式获取前几个月的完整日期范围:Y-m-d

我已成功获取“本”月的完整日期范围,但无法获取“前”月的完整日期范围。

非常感谢任何帮助!

【问题讨论】:

    标签: php datetime date strtotime mktime


    【解决方案1】:

    这可以正确完成工作:

    echo date('Y-m-01 - Y-m-t', strtotime('previous month'));
    

    这是证明:http://ideone.com/L82ZW

    【讨论】:

      【解决方案2】:
          $last_month_first_day=strtotime('first day of last month');
          $no_of_days=date('t',$last_month_first_day);
          $date_value=$last_month_first_day;
          for($i=0;$i<$no_of_days;$i++)
          {
              echo date('Y-m-d',$date_value)."<br>";
              $date_value=strtotime("+1 day",$date_value);
          }
      

      此代码将打印您想要的内容..

      第一次约会:

      echo date('Y-m-d',strtotime('first day of last month'));
      

      最后日期:

      echo date('Y-m-d',strtotime('last day of last month'));
      

      【讨论】:

      • 这对我有用,但它会打印出每月的每个日期。有没有办法让它只显示“第一天”和“最后一天”而不是两者之间的所有日期。示例:“2011-12-01”和“2011-12-31”?
      • 现在检查...只是第一个和最后一个日期以最简单的方式实现..:)
      【解决方案3】:

      你可以这样做:

      $month = 2;
      $lastday = mktime(0, 0, 0, $month+1, 0, 2012);
      $firstday = mktime(0, 0, 0, $month, 1, 2012);
      
      $end = date("Y-m-d", $lastday);
      $start = date("Y-m-d", $firstday);
      

      任何给定月份的最后一天都可以表示为下个月的“0”天。
      http://www.php.net/manual/en/function.mktime.php

      【讨论】:

        【解决方案4】:
        // works with PHP 5.3 or later
        $today = new DateTime();
        $thisMonthFirstDay = $today->setDate($today->format('Y'), $today->format('m'), 1);
        $previousMonthLastDay = $thisMonthFirstDay->sub(new DateInterval('P1D')); // substract 1 day
        
        $daysInLastMonth = $previousMonthLastDay->format('d');
        
        for($i=1; $i<=$daysInLastMonth; $i++) {
            $num = ($i < 10) ?'0'.$i :$i; // add zero in front if < 10
            echo $previousMonthLastDay->format('Y-m-') . $num. "\n";
        } 
        

        【讨论】:

        • 这对我有用,但它会打印出每月的每个日期。有没有办法让它只显示“第一天”和“最后一天”而不是两者之间的所有日期。示例:“2011-12-01”和“2011-12-31”?
        • 是的,有办法做到这一点。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多