【问题标题】:DateTime + 12 hours showing same DateTime. Why? [closed]DateTime + 12 小时显示相同的 DateTime。为什么? [关闭]
【发布时间】: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


【解决方案1】:

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 小时 ;)

【讨论】:

  • 是的,是的......它的工作!非常感谢 :) 在试图找出问题一个小时后,我在笔记本电脑上敲了敲头! :D 我把它改成了 24 小时制。现在它工作正常。抱歉这个愚蠢的问题。
  • 呵呵,不客气:)
【解决方案2】:

我猜它填充正确,但是您的时间格式需要设置为 24 小时,请检查一下吗?

【讨论】:

    【解决方案3】:

    日期格式是个问题,

    $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
    

    【讨论】:

      猜你喜欢
      • 2021-09-23
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      相关资源
      最近更新 更多