当我将DateTime值增加任何小时时,结果是OKAY,但是当我将它增加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
我做错了什么?
答案 0 :(得分:4)
8小时给你
Creation Date: 2016-09-07 06:00:00
Expiration Date: 2016-09-07 02:00:00
你真的认为6 + 8是2吗?不,它是14,这是下午2点 与6 + 12相同的是18,即下午6点。将显示数据的格式更改为24小时;)
答案 1 :(得分:1)
我猜它正确填充,但是你的时间格式需要设置为24小时,请你查一下吗?
答案 2 :(得分:1)
日期格式是问题,
$expiration_date= new DateTime('2016-09-07 06:00:00', new DateTimeZone('Asia/Kolkata'));
$expiration_date->add(new DateInterval('PT8H'));
echo date_format($expiration_date, 'Y-m-d H:i:s'); //2016-09-07 14:00:00