DateTime + 12 小时显示相同的 DateTime。为什么?
DateTime + 12 hours showing same DateTime. Why?
当我将 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
我做错了什么?
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 小时 ;)
我猜它正在正确填充,但是您的时间格式需要设置为 24 小时制,请检查一下好吗?
日期格式有问题,
$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
当我将 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
我做错了什么?
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 小时 ;)
我猜它正在正确填充,但是您的时间格式需要设置为 24 小时制,请检查一下好吗?
日期格式有问题,
$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