我正在 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);
}
阿勒迪尝试过
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
谢谢你的帮助
为什么不使用 date(( 函数?它返回本地时间/日期。
您可以获取今天的日期:
echo date("Y, M, d");
有关更多详细信息:日期函数 PHP
https://www.guru99.com/php-date-functions.html 很好的参考
不是每个月都有 30 天,有些甚至更少。
并非所有日子都有 24 小时。
日期时间/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