1

我正在尝试根据一天中的时间轮换电话号码。如果时间在上午 8 点到下午 5 点之间,则应显示 888 号码。如果是下午 5 点之后但早上 8 点之前,它应该显示 777 号码。这是我迄今为止得到的,但它只显示 777 号码作为我的输出,即使时间在上午 8 点到下午 5 点之间。

$dayPhoneNumber = "1-888-888-8888";
$nightPhoneNumber = "1-777-777-7777";
$currentPhoneNumber = "";

$nowHour = date("H"); 

$startHour = 8;
$endHour = 17;

if ($nowHour >= $startHour && $nowHour <= $endHour){
echo $dayPhoneNumber;
} else {
echo $nightPhoneNumber;
}
4

1 回答 1

1

我的猜测是您的服务器时间与您计算机的时间不同。如果您使用托管解决方案,您的服务器很可能在全国各地或不同的大陆上,这意味着时间会有所不同。

如果您只需要担心一个位置而不是最终用户所在的位置,那么这应该很容易做到。如果你在美国西海岸

date_default_timezone_set("America/Los_Angeles");
$hour = date("H", time()); 

以下是时区列表:http ://www.php.net/manual/en/timezones.php

如果您在确定小时时需要知道最终用户的时区,这里有一个关于这样做的讨论:如何获取客户的时区?

如果您正在处理时区问题,您可能还想使用 UTC 检索时间,然后添加或减去任何小时数以到达正确的时区:get UTC time in PHP

于 2013-10-22T20:48:27.377 回答