设置时间并相应地显示页面内容?

时间:2015-09-04 23:51:45

标签: php time

我使用以下代码在特定时间显示我的页面内容:

<?php
$dt = new DateTime();
$dt->setTimezone(new DateTimeZone('Asia/Jerusalem'));
echo $dt->format('Y-m-d H:i:s');
if ($dt > new DateTime("2015-09-05 01:15:00"))
 {
    include 'open.php';
}
    else {
        include 'closed.php';
    }

?>

我面临的唯一问题是当我在真实服务器(ipage)上传页面时。 意思是,例如现在的时间是凌晨2:49,代码正确地回显时间,但是当我上传页面时,它仍然显示正确的时间,但是在凌晨1:00或凌晨2:30之后不显示页面或者凌晨2:48。

在本地服务器上运行良好,t -1校正因子 例如,如果我想在13:00打开页面,我将条件设置为大于12:00。

导致这种情况的原因是什么?如何一劳永逸地解决这个时差问题?

1 个答案:

答案 0 :(得分:2)

您无法比较像DateTime对象这样的对象。

  

$ dt&gt;新的DateTime(&#34; 2015-09-05 01:15:00&#34;)

哪些数据相互比较?

比较
  • $ dt-&gt; diff(); (not accurate enough)
    (PHP 5> = 5.3.0)
    DateTime :: diff - DateTimeImmutable :: diff - DateTimeInterface :: diff - date_diff
    返回两个DateTime对象之间的差异

  • $ dt-&gt;格式(&#39; Y-m-d H:i:s&#39;)
    2015-09-05 05:00:12 > 2015-09-05 01:15:00

$dt  = new DateTime();
$dt2 = new DateTime("2015-09-05 01:15:00");
$dt->setTimezone(new DateTimeZone('Asia/Jerusalem'));
echo $dt->format('Y-m-d H:i:s')." <br />\n";
echo $dt2->format('Y-m-d H:i:s')." <br />\n";

if ($dt->format('Y-m-d H:i:s') > $dt2->format('Y-m-d H:i:s'))
{
    include 'open.php';
}
    else {
        include 'closed.php';
    }