2011-08-30 17 views
48

Ho usato date('w', timestamp) e date('w', timestamp) di conoscere il giorno, date('n', timestamp) per mesi, eccOttieni l'anno/mese/giorno da un datetime in php?

Ora sto utilizzando datetime e mi piacerebbe sapere quali sono le funzioni equivalenti per ottenere un giorno, un mese, ecc da un datetime.

PS: So che potrei usare UNIX_TIMESTAMP() in una query SQL ma preferisco evitare i timestamp usando il mio codice.

+1

Sta dicendo che si sta utilizzando classe DateTime di PHP? strtotime() sul risultato datetime dovrebbe darti un timestamp per usare date() su. –

+0

La quantità di upvotes sulle domande più banali su StackOverflow in questi giorni è semplicemente sbalorditiva. – j4k3

risposta

68

Usa DateTime con DateTime::format()

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

Solo un altro misdesign in PHP! Perché non ci sono funzioni getDay(), getMonth(), getYear(), ecc.? O una funzione che restituisce una matrice come fa getdate()? Che peccato che devo usare questi caratteri criptici che non sono nemmeno intuitivi. (w per giorno, dov'è la logica?) PHP è così PIENO di misdesigns. È davvero brutto lavorare con PHP. – Elmue

+4

@Elmue Ci sono molte cose a cui dare la colpa di PHP e si può continuare a farlo. Oppure puoi accettare, che questo è stato preso 1: 1 da C. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf (cerca 'strftime') Ti chiedi, perché "w" si riferisce al giorno della settimana? Sorprendente. Alla fine (90%) di solito non si desidera solo il mese o il giorno, ma una stringa di data dipendente dalla locale e formattata. Finirai comunque su 'format'. – KingCrunch

19

Partenza manuale: 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'); 
?> 

Will uscita: 2000-01-01 00:00:00

+0

Ho impostato una costante denominata TIMESTAMPFORMAT uguale a 'Y-m-d H: i: s'. È molto utile lavorare con DateTime –

Problemi correlati