Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Data wczorajsza
Forum PHP.pl > Forum > Przedszkole
Barcelona
Witam, potrzebuje przerobić parę linijek kodu aby pokazywało mi datę wczorajszą. Sam mechanizm strtotime("-1 day") jest prosty, ale nie znalazł zastosowania u mnie.

  1. $dzien = date('d');
  2. $dzien_tyg = date('l');
  3. $miesiac = date('n');
  4. $rok = date('Y');
  5.  
  6. $miesiac_pl = array(1 => 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień');
  7.  
  8. $dzien_tyg_pl = array('Monday' => 'Poniedziałek', 'Tuesday' => 'Wtorek', 'Wednesday' => 'Środa', 'Thursday' => 'Czwartek', 'Friday' => 'Piątek', 'Saturday' => 'Sobota', 'Sunday' => 'Niedziela');
  9.  
  10.  


Dzięki temu mam aktualną datą z polskim odpowiednikiem.
Potrzebuje zrobić żeby pomiędzy godziną 00:00 a 06:00 pokazywało mi datę wczorajszą.
Warunek też jest prosty:
  1. $czas = date("H:i");
  2. if ($czas>"00:00" and $czas<"06:00") {
  3. }

Nie wiem tylko jak zrobić aby $dzien = date('d'); zrobić minus jeden. Kiedy robie $dzien = date('d')-1; to pokazuje mi 3 zamiast 03. I jeszcze problem z dniem tygodnia, bo przecież od poniedziałku nie odejme 1 żeby mieć niedzieli.
Pozdrawiam
nospor
Cytat
Sam mechanizm strtotime("-1 day") jest prosty, ale nie znalazł zastosowania u mnie.
A to niby czemu? W tym kodzie pasuje jak ulał.
Kostek.88
Jesli chcesz 03 zamiast 3, to moze zapoznaj sie ze sprintf ?
Barcelona
Cytat(nospor @ 4.04.2012, 19:17:44 ) *
A to niby czemu? W tym kodzie pasuje jak ulał.

A faktycznie, zadziałało smile.gif

  1. $dzien = date('d', strtotime("-1 day"));


Jednak jest tutaj mała zagwozdka. Jeżeli jest data 01.04.2012 i kiedy cofnę tylko dzień to będzie 31.04.2012. Jaki warunek zrobić, żeby 'n' działało zależnie od 'd'

Mogę zrobić:

  1. if ($dzien == 31)


Ale to bez sensuuuuu.
nospor
Jak cofniesz o 1 dzien to bedziesz miał marzec a nie kwiecien. Nie wiem skad ty te wyliczenia bierzesz...
Barcelona
Zgadza się to w przypadku kiedy cofam dzień dla takiej funkcji date("Y-m-d");
Ja jednak cofam dzień dla poszczególnych wartości:
  1. $dzien = date('d'); // 04
  2. $dzien_tyg = date('l'); // Wednesday
  3. $miesiac = date('n'); // 04
  4. $rok = date('Y'); //2012

Po strtotime("-1 day") wynik będzie:
  1. $dzien = date('d', strtotime("-1 day")); // 03
  2. $dzien_tyg = date('l'); // Wednesday
  3. $miesiac = date('n'); // 04
  4. $rok = date('Y'); //2012
nospor
rety.... no ale dla N tez masz cofnąć dzien jak i dla każdego innego...

$miesiac = date('n', strtotime("-1 day")); // 03
Barcelona
hmm niby masz rację i jest to logiczne smile.gif
Musiałbym dać warunek dla dnia konkretnego dnia:
  1. $czas = date("H:i");
  2. if ($czas>"00:00" and $czas<"06:00") {
  3. if (date("d") == 01) {
  4. $dzien = date('d', strtotime("-1 day")); // 03
  5. $dzien_tyg = date('l', strtotime("-1 day")); // Tuesday
  6. $miesiac = date('n', strtotime("-1 day")); // 03
  7. $rok = date('Y'); //2012
  8. }
  9. }


Dobrze mniemam ? smile.gif
crocodillo
Prawie dobrze mniemasz, tylko niepotrzebnie ten warunek ze sprawdzaniem czy dzień = 1. Jeśli godzina<6 to odejmujesz dzień od wszystkich wartości (tak jak nospor wyżej napisał)

  1. list($dzien, $dzien_tyg, $miesiac, $rok) = explode(':',date('d:l:n:Y', (date('G.i')<6) ? strtotime('-1 day') : time() ));
Barcelona
Na śmierć zapomniałem o temacie smile.gif Dzięki za pomoc, teraz działa jak trzeba.
prowseed
  1. $czas = date("H:i");
  2. if ($czas>"00:00" and $czas<"06:00") {
  3. }


A, to tak dopiszę, że przecież możesz sobie strefę czasową zmienić, nie tak na siłę kombinować smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.