2016-04-25 2 views
0

У меня есть скрипт php, который проверяет, в какой день недели он находится, а затем дает часы работы для этого дня. (эта часть работает) Но я хочу включить праздники. На данный момент я пытаюсь, если праздник 5/5/2016.PHP проверяет определенную дату и выдаёт вывод

По какой-то причине это неисправного ..

Вот мой код:

PHP - редактировать

<?php 
    $strVerlofDag = '05/05/2016'; 
    if (date('d/m/Y') == $strVerlofDag); 
    { 
     echo 'Gesloten wegens O.H. Hemelvaart'; 
    } 
    else 
    { 
     $vandaag = date("l"); 
     switch($vandaag) 
     { 
      case 'Monday': 
       echo 'Maandag: 14u - 19u'; 
       break; 
      case 'Tuesday': 
       echo 'Dinsdag: 14u - 19u'; 
       break; 
      case 'Wednesday': 
       echo 'Woensdag: : 14u - 19u'; 
       break; 
      case 'Thursday': 
       echo 'Donderdag: 14u - 19u'; 
       break; 
      case 'Friday': 
       echo 'Vrijdag: : 14u - 19u'; 
       break; 
      case 'Saturday': 
       echo 'Zaterdag: 9u - 17u'; 
       break; 
      case 'Sunday': 
       echo 'Zondag: gesloten'; 
       break; 
     } 
    } 
?> 
+2

'Saterday', это неправильно, если ваша функция зависит от орфографии. Изменить: что он делает http://php.net/manual/en/function.date.php * «l (строчный регистр - полное текстовое представление дня недели \t с воскресенья по субботу» * –

+0

и ... ' 17:00 '? Или это 17:00 в военное время или' 5 вечера'. –

+0

Я не уверен, в чем логика использования функции 'checkdate()' здесь, поскольку все, что она возвращает, является истинным или ложным на основании, если дата действительна или нет. – Maximus2012

ответ

0

checkdate Funtion занимает месяцы и дни без ведущего нуля (int)

bool checkdate (int $month , int $day , int $year) 

Допустимые примеры:

checkdate(2, 29, 2016); 
checkdate(9, 8, 2016); 

Вот еще один способ добиться того, что вы хотите:

<?php 
date_default_timezone_set("Europe/Lisbon"); 
$holliday = new DateTime("04/25/2016"); 
$holliday->format("m/d/Y"); 
$today = new DateTime("today"); 

if($holliday == $today){ 
    echo "Holliday"; 
} 

Live Example

1

checkdate всегда возвращает истину, если это действительная дата, в том числе все праздники (и без выходных), поэтому именно поэтому вы r логика не будет работать так, как написано.

Я думаю, вам нужно будет жестко запрограммировать массив ваших конкретных дат праздника, а затем использовать что-то вроде in_array, чтобы узнать, находится ли оно там.

1

Как правило, лучше всего хранить KISS (держите его простым глупым), когда это возможно. Зачем конвертировать форматы даты вместо того, чтобы просто получать текущую дату в нужном формате?

$strHolidayDate = '05/05/2016'; 
if (date('d/m/Y') == $strHolidayDate); 
{ 
    echo 'Closed for holiday'; 
} 
else 
{ 
    //... do switch logic here. 
} 

Это также позволит вам преобразовать код, используя массив праздничных дат (например что-то вы извлечь из БД) очень легко.

Также нет необходимости иметь «перерыв» в вашей первой инструкции if вне коммутатора.

+0

посмотреть мой править сообщение. он все еще терпит неудачу. – user3360972

Смежные вопросы