2015-12-19 2 views
0

Я хотел бы добавить PHP-скрипт, только что позволяет посты, комментарии между этими днями и временем:Как ограничить доступ между днями и временем?

Monday-Friday: 09.00 - 19.00 
Saturday: 10.00-15.00 

Все остальное время функции поста не должна быть доступна. Любая идея в том, как я это делаю?

работа с этим, но потом я понял, что мне нужен дни, а также:

<?php date_default_timezone_set('Europe/Stockholm'); // NDT 
$startTime = '09:00'; //opening hours starts 
$endTime = '14:00'; //closing hours 
$time = new DateTime($startTime); 
$time1 = date_format($time, 'H:i'); 
$time = new DateTime($endTime); 
$time2 = date_format($time, 'H:i'); 

"Today is " . $current =date("H:i") . "<br>"; 

if ($current > $time1 && $current < $time2) { 
    echo 'The pposting is closed from 13.00 - 09.00. Sorry for the Inconvenience.'; } 
else{ 
    echo "It's open"; 
} 
+0

Пожалуйста, вы показать нам, что код, который вы пытались использовать для достижения этой цели. –

+0

Начал с thjis, но потом понял, что мне нужны и дни. "; if ($ current> $ time1 && $ current <$ time2) { echo 'Ппостинг закрыт с 13,00 до 09,00. Приносим извинения за доставленные неудобства.'; } else { echo "It is open"; } ?> – misterbister

+0

лучше добавить код в вопрос. он будет более читаемым – splash58

ответ

0

Вы можете использовать функцию 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

+0

Привет. Большое спасибо. Выглядит очень хорошо. Cheers man :-) – misterbister

+0

@misterbister Добро пожаловать. Если это помогло решить вашу проблему, вы всегда можете рассмотреть вопрос о принятии ответа. Ура! –