【发布时间】:2016-09-07 08:54:10
【问题描述】:
当我将 DateTime 值增加任何小时时,结果是好的,但是当我将它增加 12 小时时,它不会增加。
详情请看以下代码:
$creation_date = new DateTime('2016-09-07 06:00:00', new DateTimeZone('Asia/Kolkata'));
$expiration_date = new DateTime('2016-09-07 06:00:00', new DateTimeZone('Asia/Kolkata'));
当我将$expiration_date 变量增加 1 小时、3 小时、8 小时、24 小时等时,结果是完美的。例如,
案例 1:
$expiration_date->add(new DateInterval('PT1H'));
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata');
结果 1:
创建日期:2016-09-07 06:00:00
截止日期:2016-09-07 07:00:00
案例 2:
$expiration_date->add(new DateInterval('PT3H'));
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata');
结果 2:
创建日期:2016-09-07 06:00:00
截止日期:2016-09-07 09:00:00
案例 3:
$expiration_date->add(new DateInterval('PT8H'));
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata');
结果 3:
创建日期:2016-09-07 06:00:00
截止日期:2016-09-07 02:00:00
案例 4:
$expiration_date->add(new DateInterval('PT24H'));
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata');
结果 4:
创建日期:2016-09-07 06:00:00
截止日期:2016-09-08 06:00:00
但是当我将 $expiration_date 变量增加 12 小时 时,日期并没有增加!
它们显示相同的日期时间!
案例 5:
$expiration_date->add(new DateInterval('PT12H'));
echo "Creation Date: ".$creation_date->format('Asia/Kolkata')."<br/>Expiration Date: ".$expiration_date->format('Asia/Kolkata');
结果 5:
创建日期:2016-09-07 06:00:00
截止日期:2016-09-07 06:00:00
我做错了什么?
【问题讨论】:
-
我猜它填充正确,但是您的时间格式需要设置为 24 小时,请检查一下吗?
-
3v4l.org/2g7r5 为我工作。
format('Asia/Kolkata')也没有意义。 -
您的代码是正确的,您只需要确保它应该在 24 小时内显示日期时间。下午 6 点 + 12 小时 = 早上 6 点
标签: php date datetime time dateinterval