Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]konwersja daty D/M/Y do postaci Y-M-D
Forum PHP.pl > Forum > Przedszkole
casperii
Panowie, nie wiem o co chodzi , ale z pierwszą datą działa idealnie, natomiast uporczywie męczę się z drugą datą:
odbieram sobie datę:
  1. $data_from = $db->real_escape_string($_POST['data_from']);
  2. $data_to = $db->real_escape_string($_POST['data_to']);


data ma postać D/M/Y

następnie ją konwertuję do postaci D-M-Y:

  1. $data_od = date("Y-m-d", strtotime($data_from));


o ile dla pierwszej daty wynik jest ok, tak dla:

  1. $data_do = date("Y-m-d", strtotime($data_to));


dostaje wynik: 1970-01-01

nawet gdy zrobię tak:

  1. $data_do = str_replace('/', '-', $data_to);
  2. $data_do = date('Y-m-d', strtotime($date_do));


dostaje ten sam wynik: 1970-01-01

Pola w bazie mają ten sam typ "DATE". wartość date_to po odbiorze mają wartość "D/M/Y".

O co zatem chodzi? Ktoś wie ?
Comandeer
A dostajesz tam jakąś datę wgl? Sprawdź co masz w tych zmiennych.
casperii
@Comandeer

date_from - dodaje mi bez problemu do bazy w postaci y-m-d.
Natomiast są problemy z date_to:

  1. $data_to = $db->real_escape_string($_POST['data_to']); // postać daty d/m/y
  2. $data_do = str_replace('/', '-', $data_to); //konwertuje na postać d-m-y
  3. $data_doo = date("Y-m-d", strtotime($date_do)); // tu już mi zwraca 1970-01-01
nospor
Przeczytaj jeszcze raz post Comandeera. Napisal go po polsku, czyli teoretycznie w jezyku ktory powinienes znac.

ps: po co w ogole zamieniasz / na - dla funkcji strtotime questionmark.gif
casperii
@nospor przecież dałem powyżej informację w tagu php - w jakim miejscu jaką wartość otrzymuję.
odbieram daty z kalendarza (datapicker) w postaci d/m/y.
Natomiast do mysql dopisuje w postaci y-m-d (gdyż taki format ma pole DATE).

Dobra już sobie poradziłem:

  1. $data_to = $db->real_escape_string($_POST['data_to']);
  2. $data_do = date('Y-m-d', strtotime(str_replace('/', '-', $data_to)));


Tylko kto mi wytłumaczy dlaczego dla daty pierwszej działało to:

  1. $data_from = $db->real_escape_string($_POST['data_from']);
  2. $data_od = date("Y-m-d", strtotime($data_from));


a dla drugiej daty zawsze zwracało mi postać 1970-01-01
nospor
Chodzilo o $_POST['data_to'] a tego nie podales

Co do problemu. znajdz roznice miedzy
$data_doo
$data_do
casperii
$_POST['data_to'] - ma postać d/m/y (zależy jaką datę sobie zaznaczymy w kalendarzu).
nospor
My sie nie pytalismy o postac, bo to juz napisales miion razy. My sie pytalismy o DOKLADNA zawartosc.
com
btw nie prościej było zmienić format w datapicker?
casperii
Nie lepiej, bo ludzie są nauczeni że datę podaje się w kolejności dzień, miesiąc, rok, a format DATE ma postać y-m-d :-)
Wszystko już działa, więc temat można uznać za zamknięty.
com
chodziło o sam format d/m/y zamiast d-m-y wink.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.