0

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

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

谢谢!

4

3 回答 3

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;
}
于 2010-09-04T21:52:38.447 回答
1

在 PHP 5.3 及更高版本中,您可以使用 DateInterval 类

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

于 2010-09-04T18:23:07.223 回答
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 天或每天或其他时间间隔。

我敢肯定这并不漂亮——我不是最好的程序员——但我不得不把我的解决方案留给那些落后我的人。

于 2013-02-26T23:32:48.657 回答