2013-07-04 4 views
3

Это похоже на основной вопрос, и я не вижу, если это было предложено до:«Half Hour» Интервалы дат Метод

У меня есть этот if заявление в скрипте:

if (date('H') < $loc_item -> closing) {

В основном это сценарий для бизнеса. И это связано с тем, когда магазин закрывается. 6 часов, 7 часов и т. Д.

Переменная использует значения 1 - 24 только для часа. Тем не менее, НЕКОТОРЫЙ бизнес закрыт в 17:30 (17:30), 18:30 (18:30),

Будет ли значение 18,5 представляет собой 6:30 вечера? Если нет, то какой самый простой способ ввести функцию даты, где я могу добавить значение 1830, и он знает, что я имею в виду 18:30?

Редактировать: здесь нет пользовательского вывода. Сценарий просто должен знать, чтобы бросить «переключатель» в определенное время суток.

+1

Дата H будет возвращать только целое число, поэтому 17,5 будет представлять все до 17:59. – Anigel

+0

Почему бы не хранить '$ loc_item-> закрытие' как' 17: 30', а затем просто проверить, есть ли 'date ('H: i') < $loc_item-> закрытие'? Кроме того, см. Мой ответ для более правильного решения. – Matthew

ответ

1

Если вы хотите, чтобы функция date вернуть часы и минуты, а затем date('H') не собирается делать это за вас. Вам нужно date('Hi'). Это возвращает строку. Ниже приводится полный фрагмент кода: выход

<?php 
date_default_timezone_set('America/New_York'); 
echo "The time is ".date('Hi')."\n"; 
$closingTime = "12:15"; 
echo "The store closes at ".$closingTime."\n"; 
if (strtotime(date('Hi')) < strtotime($closingTime)) echo "it is still open\n"; 
else echo "the store is closed\n"; 
?> 

Пример:

The time is 1225 
The store closes at 12:15 
the store is closed 
+0

В принципе, администратор помещает 4-значное число в форме в базу данных. Например, '1830'. Пока 'php' читает это как 6:30 вечера, когда видит это значение - это все, что мне нужно.Поэтому, если атрибут 'закрытия' равен' 1830', и я сделал 'if (date ('Hi') <$ loc_item -> закрытие) {' было бы это все, что мне нужно в сравнении? – KickingLettuce

+0

Вам не нужно ':' в строке времени. Не уверен, что вы можете ускользнуть, не преобразовывая время с помощью 'strtotime', хотя - поскольку возвращаемое значение в противном случае является строкой, и я не уверен, будет ли сравнение строк гарантировать, что если time1 Floris

+0

Итак, тогда: 'if (date ('Hi') закрытие)) {' Это имеет смысл? – KickingLettuce

2

Вы можете использовать strtotime()

date("Hi", strtotime("18:40")); 
+0

Я не понимаю «дату» («Привет»), '? – KickingLettuce

+2

«Привет» - это строка формата. 'H' означает Hour и' i' означает Minute. –

+0

Увы, на самом деле это было слишком быстро. В вашем случае вы также можете заменить Hi на g: i A, чтобы получить его в формате AM/PM. – edwardmp

1

Вы на самом деле не дает нам достаточно информации, чтобы ответить на этот вопрос.

Прежде всего, вы можете сделать так, чтобы ваш скрипт поддерживал все минуты ... потому что некоторые магазины могут закрыть @ 6:45.

Я думаю, что решение, которое вы ищете, - это просто сравнить временные метки.

Самый простой способ сделать это с помощью strtotime.

0

Я бы, как правило, сделать что-то вроде:

$now = new DateTime(); 
$closing = new DateTime('19:30'); 

if ($now < $closing) // not closed 

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

+0

Это похоже на простую версию ... и правильное предположение! – KickingLettuce