我有一个简单的基于PHP时间的消息脚本(基于用户本地时间)。它不像我想象的那样有效,不太确定是什么问题。
我基本上是在这些时候寻找这些消息:
我已经有了这个代码:
<?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的新手,所以任何帮助都会很棒。
由于
答案 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!";
}
}
?>