基于时间的PHP问候

时间:2014-07-09 23:50:08

标签: php datetime time message

我有一个简单的基于PHP时间的消息脚本(基于用户本地时间)。它不像我想象的那样有效,不太确定是什么问题。

我基本上是在这些时候寻找这些消息:

  1. 凌晨3点 - 早上6点 - 消息1
  2. 早上6点 - 中午12点 - 留言2
  3. 中午12点 - 下午3点 - 消息3
  4. 下午3点 - 下午6点 - 消息4
  5. 下午6点 - 晚上8点 - 消息5
  6. 晚上8点 - 晚上10点 - 消息6
  7. 晚上10点至12点 - 留言7
  8. 12am - 3am - Message 8
  9. 我已经有了这个代码:

        <?php
    
        $b = time();
    
        $hour = date("g", $b);
        $m    = date("A", $b);
    
        if ($m == "AM") {
          if ($hour == 12) {
            echo "Good Evening!";
          } elseif ($hour < 4) {
            echo "Good Evening!";
          } elseif ($hour > 3) {
            echo "Good Morning!";
          }
        }
    
            elseif ($m == "PM") {
          if ($hour == 12) {
            echo "Good Afternoon!";
          } elseif ($hour < 6) {
            echo "Good Afternoon!";
          } elseif ($hour > 5) {
            echo "Good Evening!";
          }
        }
    
        ?> 
    

    这没关系,但似乎比我的预期提前了一个小时,我假设这是因为它正在读取GMT,而英国目前处于BST(GMT + 1)。如果无法修复,那不是问题,因为我可以相应地调整小时。当我尝试添加额外的时间我需要消息时,我得到了一些奇怪的结果。我是PHP的新手,所以任何帮助都会很棒。

    由于

2 个答案:

答案 0 :(得分:3)

您将要设置默认时区。这是一个直接来自PHP文档的方便脚本...

date_default_timezone_set('America/Los_Angeles');

$script_tz = date_default_timezone_get();

if (strcmp($script_tz, ini_get('date.timezone'))){
    echo 'Script timezone differs from ini-set timezone.';
} else {
    echo 'Script timezone and ini-set timezone match.';
}

所有支持的时区列表:http://www.php.net/manual/en/timezones.europe.php

如果我没记错的话,你只需要运行一次来​​设置时区。

答案 1 :(得分:2)

试试这个(来自http://php.net/manual/en/function.date-default-timezone-set.php

<?php
    date_default_timezone_set('Europe/Brussels'); //added line
    $b = time();

    $hour = date("g", $b);
    $m    = date("A", $b);

    if ($m == "AM") {
      if ($hour == 12) {
        echo "Good Evening!";
      } elseif ($hour < 4) {
        echo "Good Evening!";
      } elseif ($hour > 3) {
        echo "Good Morning!";
      }
    }

        elseif ($m == "PM") {
      if ($hour == 12) {
        echo "Good Afternoon!";
      } elseif ($hour < 6) {
        echo "Good Afternoon!";
      } elseif ($hour > 5) {
        echo "Good Evening!";
      }
    }

    ?>