2009-07-21 5 views
6

Come farei per trovare il timestamp unix della mezzanotte del mercoledì precedente? Il mio unico approccio sarebbe quello di ottenere l'indice del giorno e il numero del giorno di oggi, e sottrarre la differenza, ma posso pensare a diversi scenari in cui ciò fallirebbe, ad esempio, all'inizio di un mese prima che si verificasse un mercoledì.Ottieni il timestamp unix di mezzanotte del mercoledì precedente

Immagino, più conciso, come trovo la data del mercoledì precedente?

Qualsiasi aiuto sarebbe apprezzato.

+0

Siete alla ricerca di mezzanotte ora locale, o mezzanotte UTC? –

risposta

5

Che dire di strtotime?

$timestamp = strtotime("last Wednesday"); 

var_dump($timestamp); 
var_dump(date('Y-m-d H:i:s', $timestamp)); // to verify 

e si ottiene questa uscita:

int 1247608800 
string '2009-07-15 00:00:00' (length=19) 

che è davvero lo scorso mercoledì, a mezzanotte.

4

E 'più facile di quanto si possa pensare ... osservare la potenza di fuoco impressionante di questo pienamente operativo stazione da battaglia , ehm, voglio dire strtotime

$t=strtotime("last wednesday"); 

echo strftime("%d %b %Y %H:%M:%S", $t); 

Questa volontà di uscita

15 Jul 2009 00:00:00 

Che, al momento della scrittura, è lo scorso mercoledì :)

0

Come "corretto" vuoi essere? Se vuoi essere estremamente corretto, dovrai tenere conto dell'ora legale, dei fusi orari, degli anni bisestili, ecc. Ciò significa utilizzare una libreria e non solo sottrarre gli indici giornalieri.

non sto facendo attualmente PHP, ma ho usato per avere buona fortuna con le librerie PEAR: qui sono la docs per la classe Calendar