2011-09-09 12 views
5

Mam roku (2002) i próbuję dostać ją w następującym formacie:php - data formatu ISO8601?

2002-00-00T00: 00: 00

Próbowałem różnych iteracji, z których ostatni był ten :

$testdate = DateTime::createFromFormat(DateTime::ISO8601, date("c")) 
echo date_format($testdate, '2002'); 

Ale nawet jeśli zbliży, to zawsze wydaje się, aby dodać +00: 00 do końca to ...

Odpowiedz

13

Format 'c' w PHP zawsze dołącza strefy czasowej. Nie możesz tego uniknąć. Ale można zbudować datę siebie z elementów:

date('Y-m-d\TH:i:s', $testdate); 
+0

zawsze wydają się rzeczy bardziej skomplikowane niż to konieczne ... Dzięki! – KumbaThought

+1

omg! Szukałem tego przez długi czas. Wymyśliłem część "c", ale nie wiedziałem, że muszę uciec z T. Mam stałą strefę czasową dla T. Whew! Dzięki. –

+4

gmdate ("Y-m-d \ TH: i: s \ Z", $ date) – 4esn0k

0
date('Y-m-d\TH:i:s\Z', time() - date('Z')); 
+5

opracuj więcej, aby uzyskać lepsze wyjaśnienie. – Rumit

+0

Dziękujemy za ten fragment kodu, który może zapewnić krótkoterminową pomoc w ograniczonym zakresie. Właściwe wyjaśnienie znacznie poprawi (// meta.stackexchange.com/q/114762) jego długoterminową wartość, pokazując * dlaczego * jest to dobre rozwiązanie problemu i sprawiłoby, że byłby bardziej przydatny dla przyszłych czytelników z inne, podobne pytania. Proszę [edytuj] swoją odpowiedź, aby dodać wyjaśnienia, w tym założenia, które podjąłeś. –