Wenn Sie Java 8 oder höher verwenden, können Sie die neue Datums- / Uhrzeit-API verwenden. Sehen Sie diese Antwort: stackoverflow.com/a/23910924/1115554
micha
4
neue DateTime (). plusDays (1) .toDate () ???
Pietro
Antworten:
685
So etwas sollte den Trick machen:
String dt ="2008-01-01";// Start dateSimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");Calendar c =Calendar.getInstance();
c.setTime(sdf.parse(dt));
c.add(Calendar.DATE,1);// number of days to add
dt = sdf.format(c.getTime());// dt is now the new date
@Esko, c.roll (Calendar.DATE, true) rollt den Monat nicht am letzten Tag des Monats.
Sam Hasler
18
@ Ammar, das ist eine schlechte Idee, wenn du nichts verstanden hast
niccolo m.
13
Ich zitiere einige JavaDocs ... Calendar.DATE: "... Dies ist ein Synonym für DAY_OF_MONTH." Ich wünschte, die JavaDocs würden klarstellen, dass dies größere Felder (wie den Monat und das Jahr) inkrementieren würde. Calendar.roll "Addiert oder subtrahiert (nach oben / unten) eine einzelne Zeiteinheit zu dem angegebenen Zeitfeld, ohne größere Felder zu ändern". Auch hier sind "größere Felder" vage, aber das scheint mit Sams Kommentar übereinzustimmen. Ich wünschte, es gäbe einen StackOverflow zum Reparieren der alten JavaDocs.
jcalfee314
4
Jungs, leider ist es ziemlich nutzlos, Tage mit DATE, DAY_OF_MONTH oder sogar DAY_OF_YEAR hinzuzufügen - sie werden alle durch den Modul erhöht. Wenn Sie also den Kalender vom 31.12.1970 berücksichtigen, geben Sie (DAY_OF_YEAR, 1) oder roll () hinzu, aber roll () ruft schließlich add () auf und ergibt den 01.01.1970. Ich denke, der einzig richtige Weg ist, die Zeit mit Millisekunden einzustellen. Ich verwende die Kalenderklasse nie wieder.
Dmitry Gryazin
14
@Bagzerg: Du liegst falsch . add()wird das Datum rollen. Siehe auf ideone .
Jean Hominal
212
Java scheint im Vergleich zu C # weit hinter dem Achtball zu liegen. Diese Dienstprogrammmethode zeigt die Vorgehensweise in Java SE 6 mithilfe der Calendar.add-Methode (vermutlich die einzig einfache Methode).
publicclassDateUtil{publicstaticDate addDays(Date date,int days){Calendar cal =Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days);//minus number would decrement the daysreturn cal.getTime();}}
Um einen Tag gemäß der gestellten Frage hinzuzufügen, rufen Sie ihn wie folgt auf:
String sourceDate ="2012-02-29";SimpleDateFormat format =newSimpleDateFormat("yyyy-MM-dd");Date myDate = format.parse(sourceDate);
myDate =DateUtil.addDays(myDate,1);
Zu Ihrer Information … Das Joda-Time-Projekt befindet sich jetzt im Wartungsmodus und empfiehlt die Migration zu den Klassen java.time . Beide Bemühungen wurden von demselben Mann, Stephen Colebourne, geleitet. Sie teilen also ähnliche Konzepte, und die Migration ist nicht schwierig.
Basil Bourque
40
Bitte beachten Sie, dass diese Zeile 24 Stunden hinzufügt:
d1.getTime()+1*24*60*60*1000
aber diese Zeile fügt einen Tag hinzu
cal.add(Calendar.DATE,1);
An Tagen mit einer Änderung der Sommerzeit (25 oder 23 Stunden) erhalten Sie unterschiedliche Ergebnisse!
Java 8 hat eine neue API zum Arbeiten mit Datum und Uhrzeit hinzugefügt.
Mit Java 8 können Sie die folgenden Codezeilen verwenden:
// parse date from yyyy-mm-dd patternLocalDate januaryFirst =LocalDate.parse("2014-01-01");// add one dayLocalDate januarySecond = januaryFirst.plusDays(1);
@Subho Für Android vor 26, siehe das ThreeTenABP- Projekt, das das ThreeTen-Backport- Projekt anpasst , ein Back-Port, wenn der größte Teil der Java-Zeit- Funktionalität auf Java 6 und Java 7.
Basil Bourque
29
Sie können Simple java.util lib verwenden
Calendar cal =Calendar.getInstance();
cal.setTime(yourDate);
cal.add(Calendar.DATE,1);
yourDate = cal.getTime();
Diese Antwort dupliziert den Inhalt mehrerer Antworten, einschließlich der akzeptierten Antwort von vor drei Jahren. Bitte löschen Sie Ihre Antwort oder bearbeiten Sie sie, um einen Mehrwert zu erzielen.
Basil Bourque
3
Diese Antwort ist sauberer, analysiert nicht das Datum in der Mitte. Die "akzeptierte Antwort" ist zu kompliziert. Es ist gut, dass Sie Ihre hinzugefügt haben, ignorieren Sie die automatisierte Bemerkung von Basilikum
Beste Antwort, direkt auf den Punkt. Ich stimme Mickey zu, ignoriere einfach den Kommentar von Basilikum
eramirez75
23
Date today =newDate();SimpleDateFormat formattedDate =newSimpleDateFormat("yyyyMMdd");Calendar c =Calendar.getInstance();
c.add(Calendar.DATE,1);// number of days to add String tomorrow =(String)(formattedDate.format(c.getTime()));System.out.println("Tomorrows date is "+ tomorrow);
Dies wird das Datum von morgen geben. c.add(...)Die Parameter können für ein entsprechendes Inkrement von 1 auf eine andere Zahl geändert werden.
Sie können beispielsweise c.setTime (Datumsobjekt) ausführen, um vor dem Hinzufügen ein bestimmtes Datum festzulegen.
Linh Lino
Ich wünschte, die Standard-Java-Pakete würden die Handhabung von Daten weniger kompliziert machen ... Ich meine, es ist jedes Mal so schmerzhaft, wenn Sie sich mit Daten befassen möchten ... nur ein Scherz ...
Shn_Android_Dev
1
@Shn_Android_Dev Die in Java 8 und höher integrierten java.time- Klassen ersetzen die schrecklichen alten Datums- und Uhrzeitklassen und beantworten Ihren Wunsch. In den Projekten ThreeTen-Backport und ThreeTenABP auch auf Java 6/7 und frühere Android -Geräte zurückportiert . Keine Notwendigkeit, jemals Dateoder Calendarwieder zu verwenden.
Basil Bourque
19
Wenn Sie Java 8 verwenden , gehen Sie folgendermaßen vor.
LocalDate sourceDate =LocalDate.of(2017,Month.MAY,27);// Source DateLocalDate destDate = sourceDate.plusDays(1);// Adding a day to source date.DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy-MM-dd");// Setting date formatString destDate = destDate.format(formatter));// End date
Wenn Sie SimpleDateFormat verwenden möchten , gehen Sie folgendermaßen vor.
String sourceDate ="2017-05-27";// Start dateSimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");Calendar calendar =Calendar.getInstance();
calendar.setTime(sdf.parse(sourceDate));// parsed date and setting to calendar
calendar.add(Calendar.DATE,1);// number of days to addString destDate = sdf.format(calendar.getTime());// End date
Nein, in der Frage wurde nur ein Datum und keine Uhrzeit angegeben. Verwenden Sie also die LocalDateKlasse nicht LocalDateTime.
Basil Bourque
1
Ihre Antwort wiederholt den Inhalt von mindestens vier anderen Antworten. Bitte erläutern Sie, wie Ihr Mehrwert darüber hinausgeht, oder löschen Sie ihn, bevor Sie Abstimmungen sammeln.
Basil Bourque
16
long timeadj =24*60*60*1000;Date newDate =newDate(oldDate.getTime ()+timeadj);
Dies nimmt die Anzahl der Millisekunden seit der Epoche von oldDate an und fügt Millisekunden im Wert von 1 Tag hinzu. Anschließend wird mit dem öffentlichen Konstruktor Date () ein Datum mit dem neuen Wert erstellt. Mit dieser Methode können Sie 1 Tag oder eine beliebige Anzahl von Stunden / Minuten hinzufügen, nicht nur ganze Tage.
Dies ist wahrscheinlich nicht das, was OP wollte; Anpassungen vom Typ Sommerzeit, Schaltsekunden usw. werden nicht berücksichtigt.
mrec
1
Die Sommerzeit sollte nach Zeitzone / Gebietsschema erfolgen. Mein Beispiel zeigte, wie man um kleine Zeiträume erhöht. Beim Inkrementieren um Tage können Schaltsekunden ein Problem sein, aber beim Hinzufügen von Stunden ist dies weniger wahrscheinlich, obwohl dies immer noch möglich ist.
Dadurch wird ein Datum / Uhrzeit-Wert erstellt, bei dem in der Frage nur ein Datum angefordert wird. Ich schlage vor, dass ein viel klügerer Ansatz die LocalDateKlasse in den java.time-Klassen für Java 8 und höher und der Back-Port zu Java 6 und Java 7 im ThreeTen-Backport- Projekt ist.
Es ist sehr einfach, es mit einem einfachen Wort zu erklären. Holen Sie sich das heutige Datum wie unten
Calendar calendar =Calendar.getInstance();System.out.println(calendar.getTime());// print today's date
calendar.add(Calendar.DATE,1);
Stellen Sie nun mit der Methode calendar.add, die (Konstante, Wert) verwendet, einen Tag im Voraus auf dieses Datum ein. Hier könnte die Konstante DATE, Stunden, Min, Sek. Usw. sein und der Wert ist der Wert der Konstante. Wie für einen Tag ist die Vorauskonstante Calendar.DATE und ihr Wert ist 1, da wir einen Wert für einen Tag im Voraus wünschen.
System.out.println(calendar.getTime());// print modified date which is das Datum von morgen
Wenn Sie eine einzelne Zeiteinheit hinzufügen möchten und erwarten, dass auch andere Felder inkrementiert werden, können Sie die Methode add sicher verwenden. Siehe Beispiel unten:
SimpleDateFormat simpleDateFormat1 =newSimpleDateFormat("yyyy-MM-dd");Calendar cal =Calendar.getInstance();
cal.set(1970,Calendar.DECEMBER,31);System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE,1);System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE,-1);System.out.println(simpleDateFormat1.format(cal.getTime()));
Vielen Dank, dass Sie einen Beitrag leisten möchten. Dies ist jedoch bereits in mehreren anderen Antworten enthalten, daher sehe ich wirklich keinen Grund… Abgesehen davon sollte meiner Meinung nach niemand die schlecht gestaltete und längst veraltete CalendarKlasse im Jahr 2019 verwenden.
int days =7;LocalDate dateRedeemed =LocalDate.now();DateTimeFormatter formatter =DateTimeFormatter.ofPattern("dd/MM/YYYY");String newDate = dateRedeemed.plusDays(days).format(formatter);System.out.println(newDate);
Wenn Sie von java.util.Datenach konvertieren müssen, java.time.LocalDatekönnen Sie diese Methode verwenden.
Wenn Sie eine Version vor Java SE 8 verwenden, empfehle ich Ihnen, diese zu verwenden Joda-Time zu verwenden
Joda-Time bietet einen Qualitätsersatz für die Java-Datums- und Zeitklassen und ist de facto die Standard-Datums- und Zeitbibliothek für Java vor Java SE 8
int days =7;DateTime dateRedeemed =DateTime.now();DateTimeFormatter formatter =DateTimeFormat.forPattern("dd/MM/uuuu");String newDate = dateRedeemed.plusDays(days).toString(formatter);System.out.println(newDate);
Ihr Muster für das java.timeTeil ist falsch. Es sollte dd/MM/uuuudem JodaTime entsprechen.
TiiJ7
5
Verwenden Sie die DateFormatAPI, um den String in ein Date-Objekt zu konvertieren, und verwenden Sie dann die CalendarAPI, um einen Tag hinzuzufügen. Lassen Sie mich wissen, wenn Sie bestimmte Codebeispiele wünschen, und ich kann meine Antwort aktualisieren.
Noch einfacher: Löschen Sie den Formatierer und verwenden Sie ihn einfach toString(), um die Zeichenfolge im Format JJJJ-MM-TT zu erstellen (und wenn Sie darauf bestehen, denken Sie daran, dass dies mmMinuten sind, während MMder Monat ist).
Ole VV
3
Sie können dieses Paket unter "org.apache.commons.lang3.time" verwenden:
Das Vorschlagen eines DateUnterrichts im Jahr 2018 ist ein schlechter Rat. Die lästigen alten Datum Zeitklassen wie java.util.Date, java.util.Calendarund java.text.SimpleDateFormatsind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 & Java 9. Siehe Tutorial von Oracle . Siehe andere Antworten mit LocalDateKlasse.
Basil Bourque
Ja, LocalDate ist der beste Weg, dies zu tun
Shaheed
Einige Frameworks wie jsf haben jedoch einige Integrationsprobleme mit der Zeit-API. Daher sollten Sie manchmal Date verwenden. plus Umgebung Java <8
Lucke
1
@Lucke Der größte Teil der java.time- Funktionalität wurde im ThreeTen-Backport- Projekt auf Java 6 & 7 zurückportiert . Weiter angepasst an älteres Android im ThreeTenABP- Projekt. Es ist also wirklich nicht nötig, jemals diese verdammt schrecklichen alten Datums- und Uhrzeitklassen zu berühren. Viele Frameworks wurden aktualisiert. Aber nicht alles. Wenn Sie also mit altem Code zusammenarbeiten müssen, der noch nicht auf java.time aktualisiert wurde , schreiben Sie Ihren neuen Code in java.time und konvertieren Sie zu / von den alten Typen, indem Sie neue Konvertierungsmethoden aufrufen, die den alten Klassen hinzugefügt wurden.
Basil Bourque
1
Dieser Code ignoriert das entscheidende Problem der Zeitzone . Für jeden Moment variiert das Datum rund um den Globus je nach Zone. Die SimpleDateFormatKlasse fügt leider eine Zeitzone ein und wendet implizit die aktuelle Standardzone der JVM an. So sind die Ergebnisse dieser Code von was auch immer die aktuellen Standard variieren - und das Standardjederzeit ändern kann , während der Laufzeit.
Basil Bourque
3
Es ist eigentlich einfach. Ein Tag enthält 86400000 Millisekunden. Sie erhalten also zuerst die aktuelle Zeit in Millis von The System, indem System.currentTimeMillis()Sie die 84000000 Millisekunden hinzufügen und dann mit der DateKlasse ein Datumsformat für die Millisekunden generieren.
Beispiel
String Today = new Date(System.currentTimeMillis()).toString();
String Today wird 2019-05-9 sein
String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();
String Tommorow wird 2019-05-10 sein
String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();
Dieser Code verwendet die schreckliche DateKlasse, die vor Jahren durch die modernen java.time- Klassen ersetzt wurde. So viel einfacher zu bedienen:LocalDate.parse( "2019-01-23" ).plusDays( 1 )
Basil Bourque
2
Lassen Sie uns den Anwendungsfall verdeutlichen: Sie möchten Kalenderarithmetik durchführen und mit einem java.util.Date beginnen / enden .
Mischen Sie niemals die schrecklichen Legacy-Klassen wie Datemit den modernen Java.time- Klassen wie Instant. Die java.time- Klassen ersetzen die Legacy-Klassen vollständig. Insbesondere Instantersetzt java.util.Date.
Basil Bourque
1
Behandelt die Frage nicht. Sie verwenden Klassen, die einen Moment darstellen (ein Datum mit Uhrzeit im Kontext eines Versatzes oder einer Zone). In der Frage wird jedoch nur nach Datum ohne Tageszeit und ohne Zeitzone gefragt. Siehe richtige Antwort von Sobral und richtige Antwort von micha.
Basil Bourque
0
Date newDate =newDate();
newDate.setDate(newDate.getDate()+1);System.out.println(newDate);
Auf meinem Computer scheint es über einen Monat hinweg zu funktionieren. Nachher Sun Apr 30 16:25:33 CEST 2017kommt Mon May 01 16:25:33 CEST 2017. Es ist jedoch immer noch eine entmutigte Lösung. Die Methode ist nicht nur aus gutem Grund veraltet, auch 2017 haben wir sehr gute Alternativen zur DateKlasse.
Antworten:
So etwas sollte den Trick machen:
quelle
add()
wird das Datum rollen. Siehe auf ideone .Java scheint im Vergleich zu C # weit hinter dem Achtball zu liegen. Diese Dienstprogrammmethode zeigt die Vorgehensweise in Java SE 6 mithilfe der Calendar.add-Methode (vermutlich die einzig einfache Methode).
Um einen Tag gemäß der gestellten Frage hinzuzufügen, rufen Sie ihn wie folgt auf:
quelle
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 und höher. Siehe Tutorial von Oracle .java.time
Unter Java 8 und höher macht das Paket java.time dies ziemlich automatisch. ( Tutorial )
Annahme von
String
Input und Output:quelle
ZonedDateDateTime
alsOffsetDateTime
auch habenplusDays
undminusDays
Methoden sowieLocalDate
LocalDate
.Ich bevorzuge DateUtils von Apache. Überprüfen Sie dies unter http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html . Dies ist besonders dann praktisch, wenn Sie es an mehreren Stellen in Ihrem Projekt verwenden müssen und dafür keine Einzeilermethode schreiben möchten.
Die API sagt:
Beachten Sie, dass ein neues Datumsobjekt zurückgegeben wird und keine Änderungen am vorherigen selbst vorgenommen werden.
quelle
quelle
Erstellen Sie ein Kalenderobjekt und verwenden Sie die Methode add (Calendar.DATE, 1).
quelle
Werfen Sie einen Blick auf Joda-Time ( https://www.joda.org/joda-time/ ).
quelle
Bitte beachten Sie, dass diese Zeile 24 Stunden hinzufügt:
aber diese Zeile fügt einen Tag hinzu
An Tagen mit einer Änderung der Sommerzeit (25 oder 23 Stunden) erhalten Sie unterschiedliche Ergebnisse!
quelle
Java 8 hat eine neue API zum Arbeiten mit Datum und Uhrzeit hinzugefügt.
Mit Java 8 können Sie die folgenden Codezeilen verwenden:
quelle
januaryFirst.plusDays(1)
nichtdate.plusDays(1)
.Sie können Simple java.util lib verwenden
quelle
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 und höher. Siehe Tutorial von Oracle .Dies wird das Datum von morgen geben.
c.add(...)
Die Parameter können für ein entsprechendes Inkrement von 1 auf eine andere Zahl geändert werden.quelle
Date
oderCalendar
wieder zu verwenden.Wenn Sie Java 8 verwenden , gehen Sie folgendermaßen vor.
Wenn Sie SimpleDateFormat verwenden möchten , gehen Sie folgendermaßen vor.
quelle
LocalDate
Klasse nichtLocalDateTime
.Dies nimmt die Anzahl der Millisekunden seit der Epoche von oldDate an und fügt Millisekunden im Wert von 1 Tag hinzu. Anschließend wird mit dem öffentlichen Konstruktor Date () ein Datum mit dem neuen Wert erstellt. Mit dieser Methode können Sie 1 Tag oder eine beliebige Anzahl von Stunden / Minuten hinzufügen, nicht nur ganze Tage.
quelle
Seit Java 1.5 sieht TimeUnit.DAYS.toMillis (1) für mich sauberer aus.
quelle
LocalDate
Klasse in den java.time-Klassen für Java 8 und höher und der Back-Port zu Java 6 und Java 7 im ThreeTen-Backport- Projekt ist.In Java 8 ist dies auf einfache Weise möglich:
quelle
Instant.now().plus( 1 , ChronoUnit.DAYS )
?In Java 8 können Sie verwenden
java.time.LocalDate
Sie können
java.util.Date
wie folgt in ein Objekt konvertieren .Sie können
LocalDate
wie folgt zu einem String formatieren.quelle
Es ist sehr einfach, es mit einem einfachen Wort zu erklären. Holen Sie sich das heutige Datum wie unten
Stellen Sie nun mit der Methode calendar.add, die (Konstante, Wert) verwendet, einen Tag im Voraus auf dieses Datum ein. Hier könnte die Konstante DATE, Stunden, Min, Sek. Usw. sein und der Wert ist der Wert der Konstante. Wie für einen Tag ist die Vorauskonstante Calendar.DATE und ihr Wert ist 1, da wir einen Wert für einen Tag im Voraus wünschen.
System.out.println(calendar.getTime());// print modified date which is
das Datum von morgenVielen Dank
quelle
Apache Commons hat bereits diese DateUtils.addDays (Datumsdatum, int Betrag) http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addDays%28java .util.Date,% 20int% 29, das Sie verwenden, oder Sie könnten mit dem JodaTime arbeiten, um es sauberer zu machen.
quelle
Geben Sie einfach das Datum in String und die Anzahl der nächsten Tage ein
quelle
Wenn Sie eine einzelne Zeiteinheit hinzufügen möchten und erwarten, dass auch andere Felder inkrementiert werden, können Sie die Methode add sicher verwenden. Siehe Beispiel unten:
Wird drucken:
quelle
quelle
Calendar
Klasse im Jahr 2019 verwenden.Wenn Sie Java SE 8 oder höher verwenden, sollten Sie die neue Datums- / Uhrzeit-API verwenden
Wenn Sie von
java.util.Date
nach konvertieren müssen,java.time.LocalDate
können Sie diese Methode verwenden.Wenn Sie eine Version vor Java SE 8 verwenden, empfehle ich Ihnen, diese zu verwenden Joda-Time zu verwenden
quelle
java.time
Teil ist falsch. Es solltedd/MM/uuuu
dem JodaTime entsprechen.Verwenden Sie die
DateFormat
API, um den String in ein Date-Objekt zu konvertieren, und verwenden Sie dann dieCalendar
API, um einen Tag hinzuzufügen. Lassen Sie mich wissen, wenn Sie bestimmte Codebeispiele wünschen, und ich kann meine Antwort aktualisieren.quelle
Wenn Sie Java 8 verwenden
java.time.LocalDate
undjava.time.format.DateTimeFormatter
dies ganz einfach machen können.quelle
toString()
, um die Zeichenfolge im Format JJJJ-MM-TT zu erstellen (und wenn Sie darauf bestehen, denken Sie daran, dass diesmm
Minuten sind, währendMM
der Monat ist).Sie können dieses Paket unter "org.apache.commons.lang3.time" verwenden:
quelle
Date
Unterrichts im Jahr 2018 ist ein schlechter Rat. Die lästigen alten Datum Zeitklassen wiejava.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 & Java 9. Siehe Tutorial von Oracle . Siehe andere Antworten mitLocalDate
Klasse.SimpleDateFormat
Klasse fügt leider eine Zeitzone ein und wendet implizit die aktuelle Standardzone der JVM an. So sind die Ergebnisse dieser Code von was auch immer die aktuellen Standard variieren - und das Standardjederzeit ändern kann , während der Laufzeit.Es ist eigentlich einfach. Ein Tag enthält 86400000 Millisekunden. Sie erhalten also zuerst die aktuelle Zeit in Millis von The System, indem
System.currentTimeMillis()
Sie die 84000000 Millisekunden hinzufügen und dann mit derDate
Klasse ein Datumsformat für die Millisekunden generieren.Beispiel
String Today = new Date(System.currentTimeMillis()).toString();
String Today wird 2019-05-9 sein
String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();
String Tommorow wird 2019-05-10 sein
String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();
String DayAfterTommorow wird 2019-05-11 sein
quelle
Date
Klasse, die vor Jahren durch die modernen java.time- Klassen ersetzt wurde. So viel einfacher zu bedienen:LocalDate.parse( "2019-01-23" ).plusDays( 1 )
Lassen Sie uns den Anwendungsfall verdeutlichen: Sie möchten Kalenderarithmetik durchführen und mit einem java.util.Date beginnen / enden .
Einige Ansätze:
Erwägen Sie die Verwendung von java.time.Instant :
quelle
Date
mit den modernen Java.time- Klassen wieInstant
. Die java.time- Klassen ersetzen die Legacy-Klassen vollständig. InsbesondereInstant
ersetztjava.util.Date
.quelle
Sun Apr 30 16:25:33 CEST 2017
kommtMon May 01 16:25:33 CEST 2017
. Es ist jedoch immer noch eine entmutigte Lösung. Die Methode ist nicht nur aus gutem Grund veraltet, auch 2017 haben wir sehr gute Alternativen zurDate
Klasse.