我有一个简单的基于 PHP 时间的消息脚本(基于用户本地时间)。它没有像我想象的那样工作,不太确定出了什么问题。
我基本上在这些时候寻找这些消息:
- 凌晨 3 点 - 早上 6 点 - 消息 1
- 上午 6 点 - 中午 12 点 - 消息 2
- 中午 12 点 - 下午 3 点 - 消息 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!";
}
}
?>
这没关系,但似乎比我预期的早了一个小时,我假设这是因为它正在读取 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
如果我没记错的话,你只需要运行一次即可设置时区。