Temat: Zamiana formatu daty z klasą DateTime

Witam!
Mam mały problem...

Pobieram datę w formacie: 2016/01/05 24:00:00

Chcę wyciągnąć datę (bez godziny) w postaci: 05/01/2016

Stworzyłem sobie funkcję:
public function fnConvertDateToRead($date) {
$format = "Y/m/d H:m:s";
$convertDate = DateTime::createFromFormat($format, $date, new DateTimeZone('Europe/Warsaw'));
return $convertDate->format("d/m/Y");
}

według mnie powinno zwrócić wszystko poprawnie, jednak dostaję dziwną datę... np. do funkcji wrzucam
"2016/05/01 20:00:00"
a otrzymuję
"01/12/2015"

drugi przykład
Wrzucam: "2016/08/14 12:00:00"
otrzmuję: "14/12/2015"

Macie jakieś sugestie?
p.s chciałbym wykorzystać klasę DateTime

konto usunięte

Temat: Zamiana formatu daty z klasą DateTime

Bardzo popularny błąd. Się śmiesznie skład że jak bym dostał stówkę za każdym razem jak go znajduję to bym nie musiał pracować :-) Odpowiedź jest w dokumentacji:

http://php.net/manual/en/datetime.createfromformat.php

Do minut używa się "i" a nie "m" bo to drugie jest od miesięcy. A tych jest tylko 12 więc data jest nieprawidłowa. Wypisz sobie DateTime::getLastErrors(). Dam sobie głowę uciąć że dostaniesz komunikat o nieprawidłowym formacie podanej do parsowania daty.

Prawidłowy format to: Y/m/d H:i:s":


function convertdate($date, $fromFormat = 'Y/m/d H:i:s', $toFormat = 'd/m/Y') {
$date = DateTime::createFromFormat($fromFormat, $date);
return $date->format($toFormat);
}

print(ConvertDate('2016/05/01 20:00:00')); // 01/05/2016

Temat: Zamiana formatu daty z klasą DateTime

hehe dzięki. Człowiek patrzy i nie widzi...



Wyślij zaproszenie do