Вы можете использовать функцию date_default_timezone_set установить часовой пояс по умолчанию, используемый все функции даты/времени. (взято из руководства)
Чтобы указать желаемый формат от DateTime, вы можете использовать метод format. Символы, используемые в этом примере для метода формата, берутся с date.
Что вы можете сделать, это получить день недели, используя формат «N» для формата, а затем проверить, является ли он будним днем или субботой.
N ISO-8601 числовое представление дня недели (добавлено в PHP 5.1.0) 1 (понедельник) до 7 (воскресенье)
Затем проверьте с помощью запуска/время окончания рабочего дня или субботы, если оно открыто или закрыто, и отобразите ваше сообщение.
Для отображения сообщения, которое я использовал sprintf.
Может быть, эта установка может помочь вам:
<?php
date_default_timezone_set('Europe/Stockholm');
function displayAllowPostsMessage($dateTime)
{
$weekdayStartTime = new DateTime('09:00');
$weekdayEndTime = new DateTime('19:00');
$saturdayStartTime = new DateTime('10:00');
$saturdayEndTime = new DateTime('15:00');
$templateOpen = "It's %s and we are open!";
$templateClosed = "It's %s and the posting are only allowed between %s - %s. Sorry for the Inconvenience.";
$dayOfTheWeek = intval($dateTime->format('N'));
$message = "It's closed on sunday.";
// On a weekday
if ($dayOfTheWeek < 6) {
$isOpen = $dateTime > $weekdayStartTime && $dateTime < $weekdayEndTime;
$message = sprintf(
$templateOpen,
$dateTime->format('l H:i')
);
if (!$isOpen) {
$message = sprintf(
$templateClosed,
$dateTime->format('l H:i'),
$weekdayStartTime->format("H:i"),
$weekdayEndTime->format("H:i")
);
}
}
// On a saturday
if ($dayOfTheWeek === 6) {
$isOpen = $dateTime > $saturdayStartTime && $dateTime < $saturdayEndTime;
$message = sprintf(
$templateOpen,
$dateTime->format('l H:i')
);
if (!$isOpen) {
$message = sprintf(
$templateClosed,
$dateTime->format('l H:i'),
$saturdayStartTime->format("H:i"),
$saturdayEndTime->format("H:i")
);
}
}
echo $message;
}
displayAllowPostsMessage(new DateTime());
Demo with added debug code to test different days
Пожалуйста, вы показать нам, что код, который вы пытались использовать для достижения этой цели. –
Начал с thjis, но потом понял, что мне нужны и дни. Php date_default_timezone_set ('Европа/Стокгольм'); // NDT $ startTime = '09: 00 '; // начинается открытие часов $ endTime = '14: 00 '; // время закрытия $ time = new DateTime ($ startTime); $ time1 = date_format ($ time, 'H: i'); $ time = new DateTime ($ endTime); $ time2 = date_format ($ time, 'H: i'); «Сегодня есть». $ current = date ("H: i"). "
"; if ($ current> $ time1 && $ current <$ time2) { echo 'Ппостинг закрыт с 13,00 до 09,00. Приносим извинения за доставленные неудобства.'; } else { echo "It is open"; } ?> – misterbister
лучше добавить код в вопрос. он будет более читаемым – splash58