我正在尝试找到一个现有的辅助函数,它将接受开始和结束日期和间隔(日、周、月、年),并将在该范围内每天、每周、每月或每年返回一个数组。
如果它在那里,我很想找到一个预先存在的。
谢谢!
这是一个粗略的开始:
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;
}
在 PHP 5.3 及更高版本中,您可以使用 DateInterval 类
我在寻找同样的东西时发现了这个线程。这是我想出的效果很好的方法。
我有一个电子邮件地址和他们订阅电子邮件列表时的 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 天或每天或其他时间间隔。
我敢肯定这并不漂亮——我不是最好的程序员——但我不得不把我的解决方案留给那些落后我的人。