字符串修改会使PHP中的格式混乱


string modification messes formatting in PHP

$str = date("d")+1 . date("-m") . date("-y");
$date = new DateTime($str);
echo $date->format('y-m-d ');

这个可以正常工作,但是…

$str = date("d")+1 . date("-m") . date("-y");
$date = new DateTime($str);
echo $date->format('d-m-Y ');

奇怪的是,两个都给出了不同的日期

我认为这是由于DateTime构造函数,但有一个简单的解决办法吗?

在日期格式中使用大写的Y将为您提供四位数字的年份。使用小写的y将只提供两位数字。

Yy不同。

但关键是,如果你只想得到明天的日期,不要写这样的代码,只需使用:

$date = new DateTime('+1 day');
echo $date->format('Y-m-d');

如果你不在乎时间,那么你甚至可以使用:

$date = new DateTime('tomorrow');

代替手动添加字符串date()函数,您可以使用对象modify:

$str = date("d") . date("m") . date("y");
$time = new DateTime($str);
$time->modify("+1 day");
echo $time->format("d-m-y");

更好的办法:

$time = new DateTime("+1 day");
echo $time->format("d-m-y");