php - 基于时间的PHP问候

原文 标签 php datetime time message

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

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


凌晨3点-6点-讯息1
早上6点至下午12点-讯息2
12pm-3pm-消息3
下午3点-下午6点-讯息4
下午6点-晚上8点-讯息5
晚上8点至晚上10点-讯息6
晚上10点至-12点-讯息7
凌晨12点-3点-讯息8


我已经有以下代码:

    <?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!";
      }
    }

    ?> 


没关系,但似乎比我预期的早了一个小时,我认为这是因为它正在读取格林尼治标准时间,而英国目前处于BST(GMT + 1)。如果不能解决,那不是问题,因为我可以相应地调整小时数。当我尝试添加其他时间时,尽管我需要消息,但结果却有些奇怪。我是PHP的新手,所以任何帮助都会很棒。

谢谢

最佳答案

您将要设置默认时区。这是直接来自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

如果我没记错的话,您只需要运行一次即可设置时区。

相关文章:

php - 将MYSQL查询限制为1个结果,以阻止fetch_assoc()失败

ruby - Ruby时间段类

php - 如何更改jpg质量输出?

java - 如何将OffsetTime转换为本地OffsetTime?

mysql - 计算每日平均值(或:日期范围内有多少个星期一?)

mysql - MySQL CSV文件导入dateTime

time - 为什么我在Google Analytics(分析)Query Explorer中看不到时间戳记

javascript - jQuery-自动将当前年份月份添加到下拉列表中

php - PHP中简单干净的xml操作

javascript - 在哪里/如何添加自定义js magento