Skip to main content
 首页 » 编程设计

php之基于时间的 PHP 问候语

2024年05月22日31zdz8207

我有一个简单的基于 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. 上午 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!"; 
      } 
    } 
 
    ?>  

这没关系,但似乎比我预期的早了一个小时,我假设这是因为它正在读取 GMT,而英国目前处于 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

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