Danke Piyush, und was dieses cal Datumsformat, ich muss dies in MySQL
Kiran
Der MySQL-Datentyp für Datum ist DATETIME.
Kiran
ist dieses korrekte Datumsformat, das ich zurückgeben kann, um es in
MySQL
1
Der Java-Code zum Hinzufügen eines Monats zum aktuellen Datum im gewünschten Format lautet wie folgt. Jetzt müssen Sie diesen String in ein Datum konvertieren und in die MYSql-Datenbank einfügen. Beachten Sie, dass Sie das Datumsformat im DateFormat-Konstruktor oder höher in der MYSQL-Abfrage mithilfe der Funktion STR_TO_DATE (str, format) ändern können. DateFormat-Formatierer = neues SimpleDateFormat ("JJJJ-MM-TT hh: mm: ss"); Kalender jetzt = Calendar.getInstance (); now.add (Calendar.MONTH, 1); String dateString = formatter.format (now.getTime ());
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die alten lästigen Datum Zeitklassen wie java.util.Date, .Calendar, & java.text.SimpleDateFormat. Das Joda-Time- Team empfiehlt außerdem die Migration zu java.time.
Wenn Sie nur das Datum möchten, verwenden Sie die LocalDateKlasse.
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
today.toString (): 2017-01-23
Fügen Sie einen Monat hinzu.
LocalDate oneMonthLater = today.plusMonths( 1 );
oneMonthLater.toString (): 23.02.2017
Terminzeit
Vielleicht möchten Sie eine Tageszeit zusammen mit dem Datum.
Erhalten Sie zuerst den aktuellen Moment in UTC mit einer Auflösung von Nanosekunden .
Instant instant = Instant.now();
Das Hinzufügen eines Monats bedeutet das Bestimmen von Daten. Um Daten zu bestimmen, muss eine Zeitzone angewendet werden. Für jeden Moment variiert das Datum auf der ganzen Welt, wobei ein neuer Tag früher im Osten beginnt. Stellen Sie das also Instantin eine Zeitzone ein.
Möglicherweise möchten Sie die Tageszeit an den ersten Moment des Tages anpassen, wenn Sie diese Art der Berechnung durchführen. Dieser erste Moment ist nicht immer 00:00:00.0so, dass Java.time die Tageszeit bestimmt.
Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden Interval, YearWeek, YearQuarter, und mehr .
Joda-Zeit
Update: Das Joda-Time-Projekt befindet sich jetzt im Wartungsmodus. Das Team empfiehlt die Migration zu den Klassen java.time. Ich lasse diesen Abschnitt für die Nachwelt intakt.
Die Joda-Time- Bibliothek bietet eine Methode, um Monate auf intelligente Weise hinzuzufügen.
Können Sie erklären, was Ihr Code tut und nicht nur einen großen Codeblock?
Necoras
Mein Code ist restriktiver und allgemeiner. Restriktiver, da nur das Datum (in Form einer Zeichenfolge) mit dem festen Format "MM / TT / JJJJ" verarbeitet wird. Allgemein, weil Sie damit einen beliebigen positiven Monat an Ihrem angegebenen Datum hinzufügen können.
DJAM Silvère Gatien
Wenn Sie also einen weniger restriktiven Code benötigen, der java.util.Date verwendet und nach dem Hinzufügen eines Monats ein weiteres java.util.Date rendert, siehe unten: Calendar cal = Calendar.getInstance (); cal.setTime (Datum); cal.add (Calendar.MONTH, 1); cal.getTime ();
DJAM Silvère Gatien
3
Sie können die DateUtils-Klasse im Paket org.apache.commons.lang3.time verwenden
Wenn Sie einen Einzeiler benötigen (dh für die Jasper Reports-Formel) und es Ihnen nichts ausmacht, wenn die Anpassung nicht genau einen Monat beträgt (dh "30 Tage" sind ausreichend):
Vergessen Sie nicht, das Suffix 'L' zur Nummer hinzuzufügen, wenn dies als einfaches int behandelt wird und zu einer negativen Zahl überläuft!
Nicolas Buquet
1
Sie können so verwenden;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String d = "2000-01-30";
Date date= new Date(sdf.parse(d).getTime());
date.setMonth(date.getMonth() + 1);
* @deprecated Ab JDK Version 1.1 * ersetzt durch <code> Calendar.set (Calendar.MONTH, int month) </ code>. Wie die Date.java sagt.
Jasper Lankhorst
1
Um den Tag nach einem Monat zu finden, muss man sich ansehen, welcher Tag des Monats heute ist.
Wenn der Tag also der erste Tag des Monats ist, führen Sie den folgenden Code aus
Calendar calendar = Calendar.getInstance();
Calendar calFebruary = Calendar.getInstance();
calFebruary.set(Calendar.MONTH, Calendar.FEBRUARY);
if (calendar.get(Calendar.DAY_OF_MONTH) == 1) {// if first day of month
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
Date nextMonthFirstDay = calendar.getTime();
System.out.println(nextMonthFirstDay);
}
Wenn der Tag der letzte Tag des Monats ist, führen Sie die folgenden Codes aus.
elseif ((calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH))) {// if last day of month
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextMonthLastDay = calendar.getTime();
System.out.println(nextMonthLastDay);
}
Wenn der Tag im Februar ist, führen Sie den folgenden Code aus
elseif (calendar.get(Calendar.MONTH) == Calendar.JANUARY
&& calendar.get(Calendar.DAY_OF_MONTH) > calFebruary.getActualMaximum(Calendar.DAY_OF_MONTH)) {// control of february
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextMonthLastDay = calendar.getTime();
System.out.println(nextMonthLastDay);
}
Die folgenden Codes werden für andere Fälle verwendet.
else { // any day
calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date theNextDate = calendar.getTime();
System.out.println(theNextDate);
}
Erstens ist die Antwort aufgrund des OP falsch. Zweitens: Das OP wurde vor 8 (!) Jahren beantwortet, und drittens gibt es bessere Möglichkeiten, eine Datumsausgabe zu formatieren, als viele Zeichenfolgen zu verwenden.
Antworten:
Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1);
quelle
Java 8
LocalDate futureDate = LocalDate.now().plusMonths(1);
quelle
Sie können die Hilfsdienstprogrammklasse lang DateUtils von apache verwenden.
Date newDate = DateUtils.addMonths(new Date(), 1);
Sie können commons lang jar unter http://commons.apache.org/proper/commons-lang/ herunterladen.
quelle
tl; dr
Beispiel:
LocalDate.now( ) .plusMonths( 1 );
Besser Zeitzone angeben.
LocalDate.now( ZoneId.of( "America/Montreal" ) .plusMonths( 1 );
java.time
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die alten lästigen Datum Zeitklassen wie
java.util.Date
,.Calendar
, &java.text.SimpleDateFormat
. Das Joda-Time- Team empfiehlt außerdem die Migration zu java.time.Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen.
Ein Großteil der Funktionen von java.time wird in ThreeTen-Backport auf Java 6 & 7 zurückportiert und in ThreeTenABP weiter an Android angepasst .
Nur Datum
Wenn Sie nur das Datum möchten, verwenden Sie die
LocalDate
Klasse.ZoneId z = ZoneId.of( "America/Montreal" ); LocalDate today = LocalDate.now( z );
Fügen Sie einen Monat hinzu.
LocalDate oneMonthLater = today.plusMonths( 1 );
Terminzeit
Vielleicht möchten Sie eine Tageszeit zusammen mit dem Datum.
Erhalten Sie zuerst den aktuellen Moment in UTC mit einer Auflösung von Nanosekunden .
Das Hinzufügen eines Monats bedeutet das Bestimmen von Daten. Um Daten zu bestimmen, muss eine Zeitzone angewendet werden. Für jeden Moment variiert das Datum auf der ganzen Welt, wobei ein neuer Tag früher im Osten beginnt. Stellen Sie das also
Instant
in eine Zeitzone ein.ZoneId zoneId = ZoneId.of( "America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Fügen Sie nun Ihren Monat hinzu. Lassen Sie java.time den Schaltmonat und die Tatsache, dass die Monate unterschiedlich lang sind, verarbeiten.
ZonedDateTime zdtMonthLater = zdt.plusMonths( 1 );
Möglicherweise möchten Sie die Tageszeit an den ersten Moment des Tages anpassen, wenn Sie diese Art der Berechnung durchführen. Dieser erste Moment ist nicht immer
00:00:00.0
so, dass Java.time die Tageszeit bestimmt.Über java.time
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie
java.util.Date
,Calendar
, &SimpleDateFormat
.Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .
Woher bekomme ich die java.time-Klassen?
Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden
Interval
,YearWeek
,YearQuarter
, und mehr .Joda-Zeit
Update: Das Joda-Time-Projekt befindet sich jetzt im Wartungsmodus. Das Team empfiehlt die Migration zu den Klassen java.time. Ich lasse diesen Abschnitt für die Nachwelt intakt.
Die Joda-Time- Bibliothek bietet eine Methode, um Monate auf intelligente Weise hinzuzufügen.
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" ); DateTime now = DateTime.now( timeZone ); DateTime nextMonth = now.plusMonths( 1 );
Sie können sich auf den Tag konzentrieren, indem Sie die Tageszeit an den ersten Moment des Tages anpassen.
DateTime nextMonth = now.plusMonths( 1 ).withTimeAtStartOfDay();
quelle
Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); java.util.Date dt = cal.getTime();
quelle
(angepasst von Duggu)
public static Date addOneMonth(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, 1); return cal.getTime(); }
quelle
Verwenden Sie den Kalender und probieren Sie diesen Code aus.
Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); Date nextMonthFirstDay = calendar.getTime(); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date nextMonthLastDay = calendar.getTime();
quelle
public Date addMonths(String dateAsString, int nbMonths) throws ParseException { String format = "MM/dd/yyyy" ; SimpleDateFormat sdf = new SimpleDateFormat(format) ; Date dateAsObj = sdf.parse(dateAsString) ; Calendar cal = Calendar.getInstance(); cal.setTime(dateAsObj); cal.add(Calendar.MONTH, nbMonths); Date dateAsObjAfterAMonth = cal.getTime() ; System.out.println(sdf.format(dateAsObjAfterAMonth)); return dateAsObjAfterAMonth ; }`
quelle
Sie können die DateUtils-Klasse im Paket org.apache.commons.lang3.time verwenden
DateUtils.addMonths(new Date(),1);
quelle
Wenn Sie einen Einzeiler benötigen (dh für die Jasper Reports-Formel) und es Ihnen nichts ausmacht, wenn die Anpassung nicht genau einen Monat beträgt (dh "30 Tage" sind ausreichend):
new Date($F{invoicedate}.getTime() + 30L * 24L * 60L * 60L * 1000L)
quelle
Sie können so verwenden;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String d = "2000-01-30"; Date date= new Date(sdf.parse(d).getTime()); date.setMonth(date.getMonth() + 1);
quelle
Um den Tag nach einem Monat zu finden, muss man sich ansehen, welcher Tag des Monats heute ist.
Wenn der Tag also der erste Tag des Monats ist, führen Sie den folgenden Code aus
Calendar calendar = Calendar.getInstance(); Calendar calFebruary = Calendar.getInstance(); calFebruary.set(Calendar.MONTH, Calendar.FEBRUARY); if (calendar.get(Calendar.DAY_OF_MONTH) == 1) {// if first day of month calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); Date nextMonthFirstDay = calendar.getTime(); System.out.println(nextMonthFirstDay); }
Wenn der Tag der letzte Tag des Monats ist, führen Sie die folgenden Codes aus.
else if ((calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH))) {// if last day of month calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date nextMonthLastDay = calendar.getTime(); System.out.println(nextMonthLastDay); }
Wenn der Tag im Februar ist, führen Sie den folgenden Code aus
else if (calendar.get(Calendar.MONTH) == Calendar.JANUARY && calendar.get(Calendar.DAY_OF_MONTH) > calFebruary.getActualMaximum(Calendar.DAY_OF_MONTH)) {// control of february calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date nextMonthLastDay = calendar.getTime(); System.out.println(nextMonthLastDay); }
Die folgenden Codes werden für andere Fälle verwendet.
else { // any day calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date theNextDate = calendar.getTime(); System.out.println(theNextDate); }
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 .Diese Methode gibt das aktuelle Datum plus 1 Monat zurück.
public Date addOneMonth() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); return cal.getTime(); }`
quelle
Date dateAfterOneMonth = new DateTime(System.currentTimeMillis()).plusMonths(1).toDate();
quelle
public class StringSplit { public static void main(String[] args) { // TODO Auto-generated method stub date(5, 3); date(5, 4); } public static String date(int month, int week) { LocalDate futureDate = LocalDate.now().plusMonths(month).plusWeeks(week); String Fudate = futureDate.toString(); String[] arr = Fudate.split("-", 3); String a1 = arr[0]; String a2 = arr[1]; String a3 = arr[2]; String date = a3 + "/" + a2 + "/" + a1; System.out.println(date); return date; } }
Ausgabe:
10/03/2020 17/03/2020
quelle