2013-05-26 11 views
18

Mam ciąg, który jest '23/05/2013' i chciałem utworzyć nowy obiekt Data Godzina z tego, więc zrobiłam:Tworzenie nowej Data Godzina z ciągiem

new \DateTime('23/05/2013'); 

jakiś pomysł, dlaczego ja otrzymuję ten błąd cały czas:

DateTime::__construct(): Failed to parse time string (23/05/2013) at position 0 (2): Unexpected character 
+5

użyć 'DateTime :: createFromFormat() ', aby można było określić format. – Barmar

+1

http://php.net/manual/es/function.date-create.php Jeśli otrzymujesz komunikat o błędzie: Wyjątek: DateTime :: __ construct(): Nie można przeanalizować łańcucha czasu (13/02/2013) na pozycji 0 (1): nieoczekiwany znak w obiekcie DateTime -> __ construct() Należy pamiętać, że po utworzeniu nowego obiektu daty przy użyciu ukośników i kresek musi on znajdować się w mm/dd/rr (yy) Months zawsze przed latami (amerykański styl) inaczej otrzymasz niepoprawną datę i może pojawić się błąd podobny do powyższego (gdzie PHP ulega awarii przy próbie odkodowania 13 miesiąca). – ray

Odpowiedz

22

Jeśli chcesz użyć obiektu normalnie zamiast statycznie spróbuj tego:

$datetime = new DateTime(); 
$newDate = $datetime->createFromFormat('d/m/Y', '23/05/2013'); 

wtedy można go używać jak normalny:

echo $newDate->format('Y-m-d'); 
+1

Ten zwróci bieżącą datę, zamiast tej podanej w funkcji createFromFormat. Powinien to być '$ newDate = $ datetime-> createFromFormat ('d/m/Y', '23/05/2013 ');' Jako "createFromFormat" zwraca obiekt DateTime. – VDonchev

+0

Po tym wszystkim, i masz rację. – Farkie

Powiązane problemy