日期说我们是4月1日,忘记了29日,30日,31日



我正在 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

最新更新