我正在尝试找到一个现有的辅助函数,它将接受一个开始和结束日期和间隔(日,周,月,年),并将返回该范围内每天,每月或每年的数组。 / p>
如果它在那里,我很想找到一个已存在的那个。
谢谢!
答案 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类答案 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天或每天或其他任何时间间隔。
我确信这不是很好 - 我不是最好的编码员 - 但我不得不为那些落后于我的人留下我的解决方案。