现有脚本按日,周,月,年循环显示日期范围?

时间:2010-09-04 18:20:28

标签: php datetime helper

我正在尝试找到一个现有的辅助函数,它将接受一个开始和结束日期和间隔(日,周,月,年),并将返回该范围内每天,每月或每年的数组。 / p>

如果它在那里,我很想找到一个已存在的那个。

谢谢!

3 个答案:

答案 0 :(得分:2)

这是一个艰难的开始:

function makeDayArray( $startDate , $endDate ){
 // Just to be sure - feel free to drop these is your sure of the input
  $startDate = strtotime( $startDate );
  $endDate   = strtotime( $endDate );

 // New Variables
  $currDate  = $startDate;
  $dayArray  = array();

 // Loop until we have the Array
  do{
    $dayArray[] = date( 'Y-m-d' , $currDate );
    $currDate = strtotime( '+1 day' , $currDate );
  } while( $currDate<=$endDate );

 // Return the Array
  return $dayArray;
}

答案 1 :(得分:1)

在PHP 5.3及更高版本中,您可以为该

使用DateInterval类

http://www.php.net/manual/en/class.dateinterval.php

答案 2 :(得分:0)

我在寻找同样的事情的时候找到了这个帖子。以下是我提出的最佳方法。

我有一个电子邮件地址数据库和他们订阅电子邮件列表时的unix时间戳。我想知道每周的订阅率是多少。

$startdate = 1325376000; // Jan 1 2012
//$startdate = 1293926400; // Jan 1 2011
$currentstart = $startdate;
$currentend = $startdate + 604800; // 604800 = 1 week

while($currentend < 1356998400) {
    $sql = "SELECT * FROM the_table WHERE unixdate > $currentstart AND unixdate <= " . ($currentstart + 604800 - 1);
    $result = mysql_query($sql);
    echo date('D Y-m-d', ($currentstart)) . " - " .  date('D Y-m-d', ($currentstart + 604800 - 1)) . ": <strong>" . mysql_num_rows($result) . "</strong><br />";
    $currentstart = $currentend;
    $currentend += 604800;
}

您可以将604800号码更改为30天或365天或每天或其他任何时间间隔。

我确信这不是很好 - 我不是最好的编码员 - 但我不得不为那些落后于我的人留下我的解决方案。