2015-04-13 4 views
-2

ОК, я новичок в программировании PHP, и я попытался просмотреть предыдущие вопросы здесь, поэтому, если я что-то пропустил, сообщите мне.если оператор основан на дате()

Используя инструкцию PHP if, я пытаюсь запустить один известный рабочий код PHP/MySQL между часами с 11:00 до 8:00 и другим известным рабочим кодом PHP/MySQL на оставшуюся часть дня.

Пожалуйста, дайте мне знать, если вам нужна дальнейшая разработка, чтобы понять мой вопрос и поблагодарить вас за помощь!

<?php 
if (date('H')>=23 || date('H')<=08)  { 

    Runs a PHP/MySQL query that is know to work. The IF statement never runs this code. 

} 
else 
{ 

    Runs another PHP/MySQL query that is know to work. The IF statement always returns FALSE and runs this code. 

} 
?> 
+1

Какой у вас вопрос? –

+0

Извините, я упомянул в коде, что оператор IF всегда возвращает false. Я пытаюсь выяснить, почему. –

+0

'08' - это число в восьмеричном представлении, а так как восьмеричное число может иметь только цифры от 0 до 7, оно недействительно. Может быть, это и есть причина? – Jost

ответ

0
date('H')<=08 

number (не quoted string) с ведущим нулем рассматривается как восьмеричное .... 08 является недействительным как восьмеричное значение, и рассматривается как числовой нуль, так что эквивалентно date('H')<=08 в date('H')<=0

EDIT

Либо позволяют свободно печатать в PHP для преобразования Hour строки в целое число:

date('H')<=8 

или использовать рыхлую сравнение типа для обеих сторон сравнения (с 08 как строка в кавычках, который будет потерять бросание в десятичную 8):

date('H')<='08' 

или использовать формат даты маски 'G'

date('G')<=8 
+0

Спасибо. Хорошо, так как дата («H») возвращает час в военном формате 00-23, как я могу ее называть? Должен ли я использовать дату («G»)? –

+0

OK Я просто попробовал эксперимент и - если (дата ('H')> = 13 || дата ('H') <= 14) - все равно возникла ложь, если оператор else отлично работает. У меня была эхо-дата сервера («H»), и она была успешной и правильной. Есть идеи? –

+0

'if (date ('H')> = 13 || date ('H') <= 14)' всегда должно появляться 'true' (не' false'), потому что каждый час дня равен> = 13 или <= 14 .... 01:00 будет верно, потому что это <= 14; 23:00 было бы правдой, потому что это> = 13 .... поэтому не имеет значения, какое значение даты («H») находится в этом новом выражении .... если вы получаете ложь от 'if (date ('H')> = 13 || date ('H') <= 14) ', тогда у вас есть гораздо более серьезная проблема ... возможно, вы имели в виду' if (date ('H')> = 13 && date ('H') <= 14) ', который будет действителен только между' 13: 00: 00.00' и ​​'14: 00: 00.00' –

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