2013-05-13 12 views
5

Come si può, in Java, calcolare il timestamp unix troncato a mezzanotte?Calcola il timestamp unix della mezzanotte precedente

PHP examples mostra come creare stringhe e quindi restituirle. Deve esserci un modo più pulito di farlo in Java rispetto a quello, sicuramente?

+1

Mezzanotte a che fuso orario? E puoi usare Joda Time? –

+0

@JonSkeet UTC e sì, potrei usare Joda Time anche se non lo sto ancora usando altrove – Will

+1

Se stai facendo una quantità significativa di data/ora di lavoro, * dovrei * assolutamente * consigliare di utilizzare Joda Time :) –

risposta

5

Unix timestamp inizia dalla mezzanotte UTC in modo che possiamo fare quanto segue

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
c.set(Calendar.HOUR_OF_DAY, 0); 
c.set(Calendar.MINUTE, 0); 
c.set(Calendar.SECOND, 0); 
c.set(Calendar.MILLISECOND, 0); 
long unixTimeStamp = c.getTimeInMillis()/1000; 
4
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
c.set(Calendar.HOUR,0); 
c.set(Calendar.MINUTE,0); 
c.set(Calendar.SECOND,0); 
c.set(Calendar.MILLISECOND,0); 

long midnightUnixTimestamp = c.getTime().getTime()/1000; 
2

per UNIX timestamp è possibile creare funzione come questa:

public long getMidnightTimestamp(long timestamp) 
{ 
    return timestamp - timestamp % 86400; // 24 * 60 * 60 sec in one day 
} 

e usarlo in questo modo:

long currentTimestamp = System.currentTimeMillis()/1000; 
long todayMidnightTimestamp = getMidnightTimestamp(currentTimestamp);