【问题标题】:How to make a for loop for some month如何制作一个月的for循环
【发布时间】:2014-11-02 22:10:51
【问题描述】:

我想在 php pdo 中创建一个 for 循环,这将为我创建一个 json 数据,但循环必须持续一个月。

我写这个:

 try {

       for ($i=1; $i<=30; $i++) {

    $temp = array();
    $temp['ID'] = $i; 

    $output['data'][] = $temp;
}
$jsonTable = json_encode($output);

所以这会返回 30 行,为期 30 天。现在我想创建一个范围等,以使我从 01.02.2014 到 2014 年 2 月 28/29.02.2014 年剩下的月份之间排成一行 ...

如何做到这一点?有什么想法吗?

【问题讨论】:

  • 那么为什么不计算出你想要的月份的天数呢,date() 函数可以做到这一点,DateTime 对象的format() 方法也可以
  • 如何查看一个月(等二月)有多少天?

标签: php date for-loop pdo


【解决方案1】:

如果您不能自己阅读手册:

$dateString = '01.02.2014';
$dt = new DateTime($dateString);
$daysInMonth = $dt->format('t');

会给你$dateString指定的月份的天数

一种循环一个月内日子的方法:

$dateString = '01.02.2014';
$startDate = new DateTime($dateString);

$period = new DateInterval('P1M');
$endDate = clone $startDate;
$endDate->add($period);

$dayPeriod = new DateInterval('P1D');
while ($startDate < $endDate) {
    echo $startDate->format('Y-m-d'), PHP_EOL;
    $startDate->add($dayPeriod);
}

另一种获取一个月日期列表的方法

$dateString = '01.02.2014';
$startDate = new DateTime($dateString);

$period = new DateInterval('P1M');
$endDate = clone $startDate;
$endDate->add($period);

$interval = new DateInterval('P1D');
$daterange = new DatePeriod($startDate, $interval ,$endDate);

foreach($daterange as $date){
    echo $date->format("Y-m-d") . PHP_EOL;
}

【讨论】:

  • 解释你所说的“不工作”是什么意思。它是否返回无效值?它会抛出错误吗?它会让你的电脑着火吗?
  • 这也很有用:cal_days_in_month(CAL_GREGORIAN, 8, 2003);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多