2011-08-30 12 views
48

użyłem date('w', timestamp) i date('w', timestamp) znać dzień, date('n', timestamp) od miesięcy, itdUzyskaj rok/miesiąc/dzień z datetime w php?

Teraz używam datetime i chciałbym wiedzieć, jakie są równoważne funkcje dostać dzień, miesiąc, etc od datetime.

PS: Wiem, że mógłbym użyć UNIX_TIMESTAMP() w zapytaniu SQL, ale wolę unikanie znaczników czasu w moim kodzie.

+1

Mówisz, używasz klasy DateTime PHP? strtotime() na wyniku datetime powinien dać ci znacznik czasu do użycia date() on. –

+0

Ilość przegranych na najbardziej trywialne pytania w StackOverflow w tych dniach jest oszałamiająca. – j4k3

Odpowiedz

68

Zastosowanie DateTime z DateTime::format()

$datetime = new DateTime($dateTimeString); 
echo $datetime->format('w'); 
+5

Kolejny misdesign w PHP! Dlaczego nie ma funkcji getDay(), getMonth(), getYear() itd.? Lub funkcja, która zwraca tablicę jak getdate() robi? Co za wstyd, że muszę używać tych tajemniczych postaci, które nie są nawet intuicyjne. (w na dzień, gdzie jest logika?) PHP jest tak PEŁNE z błędnych projektów. Praca z PHP jest naprawdę brzydka. – Elmue

+4

@Emmue Istnieje wiele rzeczy, które obwiniają PHP za i możesz to kontynuować. Lub możesz zaakceptować, że zostało to zrobione 1: 1 z C. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf (szukaj 'strftime') Zastanawiasz się, dlaczego "w" odnosi się do dnia tygodnia? Zaskakujący. Na końcu (90%) zwykle nie chcesz tylko miesiąca, czy dnia, ale sformatowanego, zależnego od ustawień regionalnych łańcucha daty. W każdym razie skończysz na 'formacie'. – KingCrunch

19

Sprawdź ręcznej: http://www.php.net/manual/en/datetime.format.php

<?php 
$date = new DateTime('2000-01-01'); 
echo $date->format('Y-m-d H:i:s'); 
?> 

wyświetli: 2000-01-01 00:00:00

+0

Ustawiam stałą o nazwie TIMESTAMPFORMAT równą "Y-m-d H: i: s". Jest bardzo przydatny w pracy z DateTime –