我正在尝试从今天开始创建一个数组,并使用PHP返回过去30天,我遇到了麻烦。我可以估计,但我不知道这样做的好方法,并考虑到上个月的天数等。有没有人有一个很好的解决方案?我无法接近,但我需要确保它是100%准确的。
答案 0 :(得分:30)
试试这个:
<?php
$d = array();
for($i = 0; $i < 30; $i++)
$d[] = date("d", strtotime('-'. $i .' days'));
?>
答案 1 :(得分:0)
你可以用时间控制日子:
for ($i = 0; $i < 30; $i++)
{
$timestamp = time();
$tm = 86400 * $i; // 60 * 60 * 24 = 86400 = 1 day in seconds
$tm = $timestamp - $tm;
$the_date = date("m/d/Y", $tm);
}
现在,在for循环中,您可以将$ the_date变量用于您可能想要的任何目的。 : - )
答案 2 :(得分:0)
$d = array();
for($i = 0; $i < 30; $i++)
array_unshift($d,strtotime('-'. $i .' days'));
答案 3 :(得分:0)
对于想要显示过去X天销售额的人,
As asked in this closed question (https://stackoverflow.com/questions/11193191/how-to-get-last-7-days-using-php#=),这对我有用。
$sales = Sale::find_all();//the sales object or array
for($i=0; $i<7; $i++){
$sale_sum = 0; //sum of sale initial
if($i==0){
$day = strtotime("today");
} else {
$day = strtotime("$i days ago");
}
$thisDayInWords = strftime("%A", $day);
foreach($sales as $sale){
$date = strtotime($sale->date_of_sale)); //May 30th 2018 10:00:00 AM
$dateInWords = strftime("%A", $date);
if($dateInWords == $thisDayInWords){
$sale_sum += $sale->total_sale;//add only sales of this date... or whatever
}
}
//display the results of each day's sale
echo $thisDayInWords."-".$sale_sum; ?>
}
在你生气之前: 我把这个答案放在这里是为了帮助那些从这个问题直接来到这里的人。无法回答:(
答案 4 :(得分:0)
这是相同内容的最新预告片,
$today = new DateTime(); // today
$begin = $today->sub(new DateInterval('P30D')); //created 30 days interval back
$end = new DateTime();
$end = $end->modify('+1 day'); // interval generates upto last day
$interval = new DateInterval('P1D'); // 1d interval range
$daterange = new DatePeriod($begin, $interval, $end); // it always runs forwards in date
foreach ($daterange as $date) { // date object
$d[] = $date->format("Y-m-d"); // your date
}
print_r($d);
工作demo。
官方doc。