2013-05-13 16 views
5

Wie können Sie in Java den Unix-Zeitstempel auf Mitternacht abgeschnitten berechnen?Berechnen Sie den Unix-Zeitstempel für die vorherige Mitternacht

PHP examples zeigen, Strings und dann Parsing sie zurück. Es muss einen saubereren Weg geben, es in Java zu machen, sicher?

+1

Mitternacht in wh Ich Zeitzone? Und kannst du Joda Time benutzen? –

+0

@JonSkeet UTC und ja, ich könnte Joda Time verwenden, obwohl ich es noch nirgendwo sonst benutze – Will

+1

Wenn Sie eine signifikante Menge an Datum/Zeit arbeiten, würde ich * Jod Time * unbedingt empfehlen :) –

Antwort

5

Unix-Zeitstempel von Mitternacht UTC beginnt, so dass wir die folgende

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

tun können für Unix-Zeitstempel Sie Funktion wie folgt erstellen:

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

Und es wie folgt verwenden:

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