我正在用PHP处理一些日期,问题是今天,php让我回到了4月1日。 我真的不知道为什么
试图更改代码以获取日期。
$actArray= array();
for($i=0;$i<30;$i++){
$date = new DateTime(date("Y-m-d"));
$date->modify("-".$i." days");
$date->modify("-1 months");
$actArray[date("Y-m-d",time()-60*60*24*$i)]=array("display"=>$date->format("Y, m, d"),"MaxPlayers"=>0,"PlayersOn"=>0,"Register"=>0);
}
Alerdy尝试
for($i=0;$i<30;$i++){
$date = new DateTime(date("Y-m-d",time()-60*60*24*$i));
$date->sub(new DateInterval("P1M"));
$actArray[date("Y-m-d",time()-60*60*24*$i)]=array("display"=>$date->format("Y, m, d"),"MaxPlayers"=>0,"PlayersOn"=>0,"Register"=>0);
}
结果相同
他似乎跳过了3天。
输出:2019,03,01 2019,02,28 2019,02,27 2019,02,26 2019,02,25 2019 ..... 2019,02,28
感谢您的帮助
答案 0 :(得分:1)
答案 1 :(得分:0)
并非每个月都有30天,有的甚至更少。
并非每天都有24小时。
DateTime / strtotime有很多选项,您无需自己计算花式时间。
考虑以下代码:
$today = new DateTime('today');
echo $today->format('Y-m-d') . PHP_EOL;
$today->sub(DateInterval::createFromDateString('30 days'));
echo $today->format('Y-m-d') . PHP_EOL;
$today = new DateTime('today');
echo $today->format('Y-m-d') . PHP_EOL;
$today->sub(DateInterval::createFromDateString('1 month'));
echo $today->format('Y-m-d') . PHP_EOL;
输出:
2019-03-29
2019-02-27
2019-03-29
2019-03-01
您知道,“ 30天”和“ 1个月”之间存在差异...
另一个例子:
$today = new DateTime('today');
echo $today->format('Y-m-d') . PHP_EOL;
for($i = 0; $i < 5; $i ++) {
$today->add(DateInterval::createFromDateString('1 days'));
echo $today->format('Y-m-d') . PHP_EOL;
}
2019-03-29
2019-03-30
2019-03-31
2019-04-01
2019-04-02
2019-04-03