Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
private long getAfterTimeForUpdates(Duration duration) {
long after = 0;
Duration durationNeg = duration.negate();
Date now = new Date();
durationNeg.addTo(now);
after = now.getTime();
return after;
}
diese Methode ermittelt das Datum seit dem die Updates berücksichtigt werden sollen anhand eines Duration-Values. Wenn ich beispielsweise die Updates der letzten 7 Tage ("P7D") haben möchte, werden von dem jetzigen Datum 7 Tage abgezogen - das ist dann das Datum seitdem die Updates berücksichtig werden.
Nun möchte ich jedoch dieses After-Datum auf den "ganzen Tag" abrunden. Das heißt, wenn das After Datum beispielsweise heute um 15 Uhr ist, möchte ich es auf heute um 0 Uhr abrunden, genauso wie heute um 9 Uhr auf heute um 0 Uhr.
Weiß jemand so eine Möglichkeit?ich konnte bis jetzt nichts finden.
Calendar-Objekt befüllen, dann dort die Stunde des Tages neu setzen
'7 Tage abziehen' ist damit auch zu machen und auf andere Weise, abgesehen von vergleichbaren hohen APIs, bestimmt fraglich,
fallst du bestimmte ms als long abziehst, bedenkst du den Übergang von Sommer zur Winterzeit?
denkbar, was durationNeg.addTo() macht, kann natürlich niemand nachvollziehen,
verlässt du dich aber eher auf die Aussage anderer, die das Programm gar nicht kennen,
als im Programm selber verlässlich nachzuschauen, ob das richtige Ergebnis rauskommt?!
das wäre doch Bestätigung genug, besonders mit verschiedenen Testfällen
statt 11 übrigens lieber die benannte Konstante Calendar.HOUR_OF_DAY schreiben
so ist es richtig, habe ausprobiert.
durationNeg.addTo(calender); tut zu dem aktuellen Datum den negierten Wert der Duration addieren --> (Wenn Duration 7 Tage ist, dann Heute - 7 Tage).
Java:
private long getAfterTimeForUpdates(Duration duration) {
long after = 0;
Duration durationNeg = duration.negate();
GregorianCalendar calender = new GregorianCalendar();
durationNeg.addTo(calender);
calender.set(Calendar.HOUR_OF_DAY, 0);
calender.set(Calendar.MINUTE, 0);
calender.set(Calendar.SECOND, 0);
calender.set(Calendar.MILLISECOND, 0);
after = calender.getTimeInMillis();;
return after;
}
ja vielleicht so wäre es besser, weiß ehrlich gesagt nicht. Jedoch ein Duration-Value muss nicht zwingenerweise in Tagen sein, es kann Minuten, Jahre und andere Einheiten repräsentieren.
Jedenfalls danke für die Antwort!