Я пытаюсь сделать так, чтобы сообщения появлялись на моем веб-сайте, когда мы открыты и когда телефоны «закрыты», но я не могу заставить его работать.
Это то, что я до сих пор (Это мое вдохновение http://codewalkers.com/c/a/Date-Time-Code/Display-message-according-to-hour-of-day/)
<?php
//Change message of the day
$open = 'We are open for business';
$closed = 'We are closed';
//Get the current time
$current_time = date(G);
//Get the current day
$current_day = date(I);
if ($current_day == "Monday" && $current_time >= 9 && $current_time <= 21) {
echo $open;
}
elseif ($current_day == "Monday" && $current_time >= 21 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Tuesday" && $current_time >= 9 && $current_time <= 21) {
echo $open;
}
elseif ($current_day == "Tuesday" && $current_time >= 21 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Wednesday" && $current_time >= 9 && $current_time <= 21) {
echo $open;
}
elseif ($current_day == "Wednesday" && $current_time >= 21 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Thursday" && $current_time >= 9 && $current_time <= 21) {
echo $open;
}
elseif ($current_day == "Thursday" && $current_time >= 21 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Friday" && $current_time >= 9 && $current_time <= 19) {
echo $open;
}
elseif ($current_day == "Friday" && $current_time >= 19 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Saturday") {
echo $closed;
}
if ($current_day == "Sunday") {
echo $closed;
}
?>
и я получаю это сообщение об ошибке
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in - on line 7 Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in - on line 9
Было бы неплохо получить квалифицированную помощь 🙂
Запрошенная вами квалифицированная помощь предоставляется в виде приведенного ниже сценария:
Также обратите внимание, что в вашем коде вы должны использовать дату (‘l’) — строчную букву L.
Список часовых поясов, которые вы можете использовать для date_default_timezone_set (), можно найти здесь:
http://php.net/manual/en/timezones.php
date_default_timezone_set('Europe/Amsterdam'); // set it to the right value
$weAreOpen = areWeOpen(date('l'), date('G'));
if($weAreOpen) {
echo 'We are open for business';
} else {
echo 'We are closed';
}
/**
* Test if we're open for business
* @param string $day - day of week (ex: Monday)
* @param string $hour - hour of day (ex: 9)
* @return bool - true if open interval
*/
function areWeOpen($day, $hour) {
$hour = (int)$hour;
switch($day) {
case 'Monday':
case 'Tuesday':
case 'Wednesday':
case 'Thursday':
if($hour >= 9 && $hour < 21) {
return true;
}
break;
case 'Friday':
if($hour >= 9 && $hour < 19) {
return true;
}
break;
}
return false;
}
date()
принимает строку, и ваш код может быть короче:
//Change message of the day
$open = 'We are open for business';
$closed = 'We are closed';
$current_time = date('G'); //Get the current time
$current_day = date('w'); //Get the current day
if ($current_day > 0 && $current_day < 6) //Monday to Friday
{
if ($current_time >= 9 && $current_time <= 21 && $current_day != 5) //Monday to Thursday between 9 and 21
echo $open;
else if ($current_time >= 9 && $current_time <= 19 && $current_day == 5) //Friday between 9 and 19
echo $open;
else
echo $closed;
}
else //Saturday and Sunday
echo $closed;
О вашем предупреждении откройте php.ini
и добавьте этот блок, если у вас его нет:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Seoul
Вы также можете просто добавить эту строку в начале вашего кода: date_default_timezone_set('Asia/Seoul');
,
Увидеть http://php.net/manual/en/timezones.php для списка поддерживаемых часовых поясов.
Так что, возможно, это решит вашу проблему:
//Get the current time
$current_time = date('G');
//Get the current day
$current_day = date('l');//This is lowercase 'L' and NOT 'I' as in "India".
И насколько я знаю, php date()
принимает строку в качестве первого аргумента. И G и L могут работать хорошо, только если вы ранее определили их как constants
…
РЕДАКТИРОВАТЬ
Видя ваш обновленный вопрос с сообщением об ошибке, вы можете попробовать это:
ini_set('date.timezone', 'Africa/Lagos');' //somewhere at the top of your code.
Или вы можете поместить это в конфигурационный файл php (например, php.ini
в окнах):
date.timezone = Africa/Lagos
Затем, конечно, замените «Африка / Лагос» на часовой пояс по вашему выбору. И для списка поддерживаемых часовых поясов, посмотреть здесь.
попробуй это
<?php
date_default_timezone_set('UTC');
//Change message of the day
$open = 'We are open for business';
$closed = 'We are closed';
//Get the current time
$current_time = date("G");
//Get the current day
$current_day = date("l");
if ($current_day == "Monday" && $current_time >= 9 && $current_time <= 21) {
echo $open;
}
elseif ($current_day == "Monday" && $current_time >= 21 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Tuesday" && $current_time >= 9 && $current_time <= 21) {
echo $open;
}
elseif ($current_day == "Tuesday" && $current_time >= 21 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Wednesday" && $current_time >= 9 && $current_time <= 21) {
echo $open;
}
elseif ($current_day == "Wednesday" && $current_time >= 21 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Thursday" && $current_time >= 9 && $current_time <= 21) {
echo $open;
}
elseif ($current_day == "Thursday" && $current_time >= 21 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Friday" && $current_time >= 9 && $current_time <= 19) {
echo $open;
}
elseif ($current_day == "Friday" && $current_time >= 19 && $current_time <= 9) {
echo $closed;
}
if ($current_day == "Saturday") {
echo $closed;
}
if ($current_day == "Sunday") {
echo $closed;
}
?>