ďťż

[PHP]Porównanie dat

       

Podstrony


telcocafe

Witam :)
Potrzebuję w skrypcie porównać aktualną datę, z datą, która jest zawarta w pliku. Wczytanie zawartości pliku do zmiennej mam zrobione, teraz tylko porównać daty. Szukałem na internecie przykładów, i zrobiłem takie coś:
<?php $time1 = mktime(18, 30, 0, 6, 08, 2009);//aktualna data $time2 = mktime(19, 30, 0, 7, 08, 2009);//data z pliku if ($time1 > $time2) { echo "Data z pliku jest starsza"; } else { echo "Data z pliku jest nowsza"; } ?>
I teraz do tego kodu trzeba mi dodać pobieranie aktualnej daty i godziny z serwera(bo nie będę za każdym razem zmieniał :blink:), i pobrać datę ze zmiennej (czyli z pliku). Tylko jak to zrobić i jak ma wyglądać data w pliku? Czy to ma być np. 19-30-0-7-08-2009, czy jakoś inaczej? Bo nie wiem jak ją zastosować do tego mktime. Pomoże ktoś?



Jeżeli chcesz wyświetlać datę w różnych formatach i uwzględniać strefy czasowe, zalecam uniksowy znacznik czasu. Nie utrudniaj sobie życia. Aktualny czas jest w zmiennej$_SERVER['REQUEST_TIME']Funkcję mktime() stosuj tylko wtedy, gdy chcesz uzyskać znacznik czasu dla konkretnego dnia, miesiąca, roku, godziny, minuty, sekundy... albo strtotime() - jako argument podajesz np. '2009-08-06 11:11:11 GMT'.
Użytkownik Ferrari edytował ten post 06 sierpień 2009, 16:32
Wielkie dzięki, działa. Gdyby ktoś chciał:
<?php $time1 = $_SERVER['REQUEST_TIME']; $time2 = strtotime($tekst);//gdzie $tekst to zmienna w której przechowywujemy zawarość pliku if ($time1 > $time2) { echo "Data z pliku jest starsza"; } else { echo "Data z pliku jest nowsza"; } ?>
a plik może mieć tekst: 2009-08-06 17:11:11. Teraz mam jeszcze jedno pytanie, jak zamienić tą unixową datę na zwykłą (taką jaka jest w pliku)?

Zapoznaj się z działem w Podręczniku PHP: funkcje daty i czasu.$tekst = strftime('format', $znacznikCzasu); //uwzględnia ustawienia lokalizacji $tekst = date('format', $znacznikCzasu); //lokalna data - wg ustawionej strefyData zostanie zwrócona w domyślnej strefie czasowej dla serwera, jeśli nie wywołasz wcześniej date_default_timezone_set(). W przypadku strftime() powinna działać funkcja setlocale().

Tylko po co przechowywać w pliku datę w formacie YYYY-DD-MM? Chyba że edytujesz ją ręcznie, to wtedy to ma sens.

Aby lepiej zrozumieć, jak PHP zarządza strefami czasowymi - porady dla wszystkich - to można umieścić w FAQ:

Uniksowy znacznik czasu to liczba sekund od 1 stycznia 1970 o godz. 00:00:00 czasu UTC, czyli uniwersalnego koordynowanego. Nie należy go mylić z GMT, który został wycofany z powszechnego użycia. W czasie UTC południe występuje średnio na południku 0 stopni, który przechodzi przez Greenwich.

Funkcje formatujące wyświetlają datę i czas w strefie lokalnej dla serwera - tej ustawionej w php.ini! Możesz ją zmienić. Wywołaj następującą funkcję - najlepiej na początku skryptu lub w plikach językowych, jeżeli tworzysz większy projekt:date_default_timezone_set('Europe/Warsaw');Do funkcji formatujących datę należą: date(), strftime()... Jako drugi parametr można podać uniksowy znacznik czasu.

Funkcja strtotime() domyślnie traktuje datę wejściową za lokalną. Jeżeli jest ona w strefie uniwersalnej, wykorzystaj trik:$znacznikCzasu = strtotime('2009-09-09 19:19:19 UTC');Po prostu dodaj na końcu skrótowiec strefy czasowej.
Użytkownik Ferrari edytował ten post 06 sierpień 2009, 22:51


Działa :). Kodzik, jeśli by ktoś szukał:
<?php $data = '1252523959'; echo date('Y-m-d H:i:s',$data); ?>
Wielkie dzięki za pomoc, temat do zamknięcia :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.