2011-12-12 15 views
25

Muszę sprawdzić w PHP, czy bieżący czas jest przed 14.00 tego dnia.PHP Sprawdź, czy aktualny czas jest przed określonym czasem.

Robiłem to z strtotime w terminach wcześniej, jednak tym razem jest to tylko raz, więc oczywiście 0.00 każdego dnia czas zostanie wyzerowany, a logiczna zresetuje od false do true.

if (current_time < 2pm) { 
    // do this 
} 
+1

To nie jest poprawny nawet PHP. Co to jest "current_time"? – KingCrunch

+6

@KingCrunch Uważam, że jest to pseudo-kod, a nie rzeczywisty kod. :-) –

+1

Wiem, że to nie jest poprawny PHP, podałem tylko przykład logiki. –

Odpowiedz

58
if (date('H') < 14) { 
    $pre2pm = true; 
} 

Aby uzyskać więcej informacji na temat funkcji data proszę see the PHP manual. Użyłem następujące formatowania czasu:

H format = 24-godzinny godzinę (00 do 23)

+0

Dobrze, że minuty nie są wymagane. Pamiętasz link do dokumentów dla 'H''? –

+0

http://uk.php.net/manual/en/function.date.php Wyświetla listę różnych sposobów formatowania daty. Myślenie o tym może być czystsze w użyciu "G", ponieważ nie zawiera wiodącej liczby 0, gdzie godzina to tylko 1 cyfra, chociaż PHP nie jest na tyle grymaśne, aby pozwolić na wywarcie wpływu na wynik instrukcji if. – Tom

+0

Pozdrawiam za edycję Treffynnon, użyteczne fragmenty. – Tom

0

Spróbuj z

if(time() < mktime(14, 0, 0, date("n"), date("j"), date("Y"))) { 

// do this 

} 
4

Zastosowanie 24 godziny czasu aby obejść problem tak:

$time = 1400; 
$current_time = (int) date('Hi'); 
if($current_time < $time) { 
    // do stuff 
} 

Więc godzina czternasta przyrównuje do 14:00 w czasie 24 godzin. Jeśli usuniemy dwukropek z czasu, wtedy możemy ocenić go jako liczbę całkowitą w naszym porównaniu.

Więcej informacji na temat funkcji daty można uzyskać pod numerem see the PHP manual. I stosuje się następujące formatujących czasowych:

H format = 24-godzinny godzinę (00 do 23)

i = minut z wiodącymi zerami (00 do 59)

18

Try :

if(date("Hi") < "1400") { 
} 

Patrz: http://php.net/manual/en/function.date.php

H 24-hour format of an hour with leading zeros 00 through 23 
i Minutes with leading zeros      00 to 59 
+0

heh, szaleje próbując to odczytać z $ z przodu. Nie pomogło to, że powiedziało "Hi" ^^ – JohnP

+0

Dlaczego nie link do faktycznego podręcznika PHP? –

+0

@JaredFarrish: Google jest moją wyrocznią :) Teraz naprawiono –

11

Możesz po prostu przejść w czasie

if (time() < strtotime('2 pm')) { 
    //not yet 2 pm 
} 

albo przekazać w dacie wyraźnie także

if (time() < strtotime('2 pm ' . date('d-m-Y'))) { 
    //not yet 2 pm 
} 
+0

+1; Naprawiono literówki i porównanie wstecz. –

1

Nie powiedziano nam, która wersja PHP używasz, chociaż , zakładając, że PHP 5.2.2+ niż powinieneś być w stanie zrobić to lubią:

$now = new DateTime(); 
$twoPm = new DateTime(); 
$twoPm->setTime(14,0); // 2:00 PM 

potem po prostu zapytać:

if ($now < $twoPm){ // such comparison exists in PHP >= 5.2.2 
    // do this 
} 

inaczej, jeśli używasz jednego z starszej wersji (powiedzmy, 5,0) to powinno załatwić sprawę (i jest znacznie prostszy):

$now = time(); 
$twoPm = mktime(14); // first argument is HOUR 

if ($now < $twoPm){ 
    // do this 
} 
0

Funkcja ta sprawdza, czy to pomiędzy godzinami w EST akceptując 2 paramy, tablice z godziną i am/pm ...

/** 
    * Check if between hours array(12,'pm'), array(2,'pm') 
    */ 
    function is_between_hours($h1 = array(), $h2 = array()) 
    { 
     date_default_timezone_set('US/Eastern'); 
     $est_hour = date('H'); 

     $h1 = ($h1[1] == 'am') ? $h1[0] : $h1[0]+12; 
     $h1 = ($h1 === 24) ? 12 : $h1; 

     $h2 = ($h2[1] == 'am') ? $h2[0] : $h2[0]+12; 
     $h2 = ($h2 === 24) ? 12 : $h2; 

     if ($est_hour >= $h1 && $est_hour <= ($h2-1)) 
      return true; 

     return false; 
    } 
0

Stosować time(), date() i strtotime() funkcje:

if(time() > strtotime(date('Y-m-d').' 14:00') { 
    //... 
} 
0

Jeśli chcesz sprawdzić, czy czas jest przed 2.30 pm, można spróbować następujący fragment kodu.

if (date('H') < 14.30) { 
    $pre2pm = true; 
}else{ 
    $pre2pm = false; 
} 
Powiązane problemy