So entfernen Sie Stunde, Minute und Sekunde aus der Epoche timestamp

Muss ich eine Funktion schreiben, die akzeptiert eine java.util.Date und entfernt Stunden, Minuten oder Millisekunden aus es MIT EINFACH MATHE (kein Datum Formatierer, kein Kalender, Objekte, etc.):

private Date getJustDateFrom(Date d) {
    //remove hours, minutes, and seconds, then return the date
}

Der Zweck dieser Methode ist, um das Datum aus einem Millisekunden Wert, ohne die Zeit.

Hier ist, was ich habe, so weit:

private Date getJustDateFrom(Date d) {
    long milliseconds = d.getTime();
    return new Date(milliseconds - (milliseconds%(1000*60*60)));
}

Das problem ist, das entfernt nur Minuten und Sekunden. Ich weiß nicht, wie zu entfernen Stunden.

Wenn ich milliseconds - (milliseconds%(1000*60*60*23)), dann geht es wieder bis 23:00 Uhr am Vortag.

EDIT:

Hier eine alternative Lösung:

public static Date getJustDateFrom(Date d) {
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    return c.getTime();
}

Wird diese Lösung beeinflusst werden durch die unterschiedlichen Zeitzonen zwischen client/server Seiten meiner app?

Was ist der Zweck dieser Methode? Wenn Sie nur wollen, Tag, Monat, Jahr, verwenden Sie die Calendar's bekommen.
tut es gehe immer um 23:00 Uhr am vorherigen Tag? Wenn das der Fall ist, können Sie nicht fügen Sie einfach 1 Stunde?
Ich habe gelesen, dass Calendar Objekt übernimmt die Zeitzone berücksichtigt. Ich habe eine web-app, der bekommt das Date-Objekt von einem client, und ich will nicht, dass Sie beeinflusst werden durch die Zeitzonen.
das scheint mir ein bisschen hacky. Das will ich nicht betroffen sein, von Schaltjahren oder DST.
Sie versuchen zu ermitteln Datum von Millisekunden. Schaltjahre müssen berücksichtigt werden

InformationsquelleAutor Churro | 2013-10-01

Schreibe einen Kommentar