2011-12-18 16 views
21

Se ho un timestamp unix casuale, come posso arrotondarlo alla mezzanotte di oggi o alla mezzanotte selezionata dall'utente. La ragione di questo è che voglio aggiungere ore e minuti dopo un determinato giorno a mezzanotte.unix timestamp round to midnight

Ad esempio se il timestamp è 1324189035, quindi come posso rimuovere ore, minuti e secondi per inserire il timestamp a mezzanotte per quel giorno.

+2

Mezzanotte di quale fuso orario? –

risposta

19
echo date('d-m-Y H:i:s', strtotime('today', 1324189035)); 
+0

perfetto. Grazie! – user962449

+1

questo è bellissimo. Ne avevo visto uno in cui qualcuno che pensava fuori dalla scatola metteva come '$ roundedStamp = $ time - ($ time% 86400);' ed era intelligente ma non perfetto. Arrotonda o diminuisce a seconda che non funzioni. Questo fa :) –

+0

Ciò restituirà una stringa di data, è necessario aggiungere 'strtotime' per ottenere il timestamp di mezzanotte che dovrebbe avvolgere l'intero codice che viene echeggiato. –

16

A causa di come lo si usa, non vorrei calcolare la mezzanotte a tutti: è molto più facile per convertire semplicemente ciò che si sta aggiungendo al timestamp nel tempo 24 ore e quindi utilizzare strtotime:

echo strtotime("0:00",1324189035); // 1324184400 
echo strtotime("17:50",1324189035); // 1324248600 

e se si vuole avere a che leggibile, utilizzare date e m/d/Y H:i:s:

echo date('m/d/Y H:i:s', strtotime('17:50',1324189035)); // 12/18/2011 17:50:00 
+0

Questa soluzione è la più elegante e gradevole. È necessario ricordare che questo è tutto GMT, quindi per ottenere 17:50 in qualsiasi altro fuso orario, l'offset di tempo dovrebbe essere aggiunto prima di questa mappatura temporale, quindi rimandato di nuovo in seguito (supponendo che alla fine stai cercando un GMT/Tempo UTC per la ricerca di dati in un database, ad esempio). – Jason

+0

Sembra mappare la mezzanotte alla * precedente * mezzanotte: 'echo strtotime (" 0:00 +0000 ", 1443441600);' stampa '1443398400' –

4

semplicemente utilizzare

strtotime('today midnight');