Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]konwersja daty D/M/Y do postaci Y-M-D
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


A dostajesz tam jakąś datę wgl? Sprawdź co masz w tych zmiennych.
Go to the top of the page
+Quote Post
casperii
post
Post #3





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


@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


Ten post edytował casperii 7.02.2016, 16:47:48
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
casperii
post
Post #5





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


@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
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Chodzilo o $_POST['data_to'] a tego nie podales

Co do problemu. znajdz roznice miedzy
$data_doo
$data_do
Go to the top of the page
+Quote Post
casperii
post
Post #7





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


$_POST['data_to'] - ma postać d/m/y (zależy jaką datę sobie zaznaczymy w kalendarzu).
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




My sie nie pytalismy o postac, bo to juz napisales miion razy. My sie pytalismy o DOKLADNA zawartosc.
Go to the top of the page
+Quote Post
com
post
Post #9





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


btw nie prościej było zmienić format w datapicker?
Go to the top of the page
+Quote Post
casperii
post
Post #10





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
com
post
Post #11





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


chodziło o sam format d/m/y zamiast d-m-y (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 03:13