2009-11-04 18 views
5

Dostaję dat od paszy w tym formacie:jak format daty atom czas

2009-11-04T19:55:41Z 

próbuję go sformatować za pomocą funkcji w PHP date(), ale pojawia się błąd mówiąc:

datę() oczekuje 2 parametr być długie, obiekt podano w /bla/bla.php

i wypróbowany przy preg_replace() usunąć T a Z, ale nadal nie może go uruchomić.

Odpowiedz

12

strtotime to wspaniała funkcja do konwersji formatów daty do znaczników czasu Uniksa.

To daje co jesteś po:

date('my format here', strtotime('2009-11-04T19:55:41Z')); 
+1

Pamiętaj, że 'strtotime' wykorzystuje strefę czasową można go znaleźć (na przykład w zmiennej' TZ' środowiska. Dokumentacja funkcji nie daje żadnych wskazówek na temat tego, co dzieje się z sygnaturami czasowymi, które zawierają informacje o strefie czasowej. – Joey

+0

działał świetnie :) dziękuję –

0

Można użyć funkcji strtotime.

echo date('Y-M-D', strtotime($feedDate)); 
1

To jest norma ISO 8601 w połączeniu data i godzina Format podane w UTC (stąd Z).

Możesz być w stanie przetworzyć go za pomocą

DateTime::createFromFormat('c', '2009-02-03'); 

lub, jeżeli nie powiedzie się (nie powinno, jeśli PHP twierdzi zrozumieć ISO 8601), można wymienić oo przez „+00: 00” .

2

Spróbuj użyć strptime:

$date = strptime($str, "Y-m-d\TH:i:s\Z"); 
9

Co

\DateTime::createFromFormat(\DateTime::ATOM, $AtomDate); // converting Atom date to object 

lub

date(\DateTime::ATOM, $timestamp); // formatting timestamp to Atom time 

lub oba

$dto = \DateTime::createFromFormat(\DateTime::ATOM, $AtomDate); 
date('d-M-Y H:i:s', $dto->getTimestamp()); // formatting Atom date to anything you want 

lub nawet lepiej

$dto = \DateTime::createFromFormat(\DateTime::ATOM, $AtomDate); 
$formattedDate = $dto->format('d-M-Y H:i:s'); 
+1

Nie wiedziałem, że ten atom jest stały, użyteczny! – COil