In meiner Android-Anwendung. Ich muss das Datum von morgen anzeigen, zum Beispiel ist heute der 5. März, also muss ich als 6. März anzeigen. Ich kenne den Code für das heutige Datum, den Monat und das Jahr.
datumsberechnung
GregorianCalendar gc = new GregorianCalendar();
yearat = gc.get(Calendar.YEAR);
yearstr = Integer.toString(yearat);
monthat = gc.get(Calendar.MONTH) + 1;
monthstr = Integer.toString(monthat);
dayat = gc.get(Calendar.DAY_OF_MONTH);
daystr = Integer.toString(dayat);
Wenn ich den Code habe
dayat = gc.get(Calendar.DAY_OF_MONTH) + 1;
wird es das Datum von morgen anzeigen. oder einfach nur ein Datum zum heutigen Datum hinzufügen? Wenn heute beispielsweise der 31. Januar ist, wird dieser mit dem obigen Code als 1 oder 32 angezeigt? Wenn es 32 anzeigt, welche Änderung muss ich vornehmen?
Holen Sie sich das heutige Datum als Calendar
.
Fügen Sie 1 Tag hinzu.
Format für Anzeigezwecke.
Zum Beispiel,
GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
// now do something with the calendar
Verwenden Sie den folgenden Code, um das Datum von morgen anzuzeigen
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
Verwenden Sie SimpleDateFormat, um das Datum als Zeichenfolge zu formatieren:
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
String todayAsString = dateFormat.format(today);
String tomorrowAsString = dateFormat.format(tomorrow);
System.out.println(todayAsString);
System.out.println(tomorrowAsString);
Drucke:
05-Mar-2014
06-Mar-2014
Mit Java.util.Date
und Java.util.Calendar
kann man schlecht arbeiten. Ich schlage vor, Sie verwenden JodaTime, das eine viel sauberere/schönere API hat. JodaTime ist heutzutage ziemlich normal.
http://www.joda.org/joda-time/#Why_Joda-Time
Beachten Sie, dass JDK 8 eine neue Datums-/Uhrzeit-API einführt, die stark von JodaTime beeinflusst wird.
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
sie müssen nur 1 an Ihrem Kalendertag hinzufügen.
GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
Andere Optionen:
Calendar tomorrow = Calendar.getInstance();
tomorrow.roll(Calendar.DATE, true);
oder
tomorrow.roll(Calendar.DATE, 1);
roll
kann auch verwendet werden, um eine negative Zahl zu übergeben, z.
Calendar yesterday = Calendar.getInstance();
yesterday.roll(Calendar.DATE, -1);
Die Klassen Java.util.Date und .Calendar sind bekanntermaßen lästig. Vermeide sie. Verwenden Sie stattdessen entweder Joda-Time library oder das neue Java.time-Paket im Paket mit Java 8 .
Beispielcode, der die Bibliothek Joda-Time 2.3 verwendet.
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime now = new DateTime( timeZone );
DateTime tomorrow = now.plusDays( 1 );
String output = DateTimeFormat.forPattern( "FF" ).withLocale(Locale.FRANCE).print( tomorrow );
die ersten Antworten decken die Möglichkeiten ziemlich genau ab.
Date lTomorrow = DateUtils.addDays(new Date(), 1);
Holen Sie sich das heutige Datum mithilfe des Kalenders und fügen Sie dann 1 Tag hinzu.
Der beste Weg für die Einstellung am nächsten Tag ist
public void NextDate()
{
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
// set current date into textview
e_date.setText(new StringBuilder()
// Month is 0 based, just add 1
.append(mDay+1).append("-").append(mMonth + 1).append("-")
.append(mYear).append(" "));
}
Das funktioniert gut für mich !!
Date currentDate = new Date();// get the current date
currentDate.setDate(currentDate.getDate() + 1);//add one day to the current date
dateView.setText(currentDate.toString().substring(0, 10));// put the string in specific format in my textView
viel Glück!!
String lastDate="5/28/2018";
Calendar calendar = Calendar.getInstance();
String[] sDate=lastDate.split("/");
calendar.set(Integer.parseInt(sDate[2]),Integer.parseInt(sDate[0]),Integer.parseInt(sDate[1]));
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
// String todayAsString = dateFormat.format(today);
for (int i=1;i<29;i++)
{
calendar.add(Calendar.DAY_OF_YEAR,1);
// td[i].setText(dateFormat.format(calendar.getTime()));
System.out.println(dateFormat.format(calendar.getTime()));
}
Versuchen Sie es so ..
dayat = gc.add(Calendar.DATE, 1);
Just call this method and send date from which you want next date
public String nextDate(Date dateClicked) {
//
String next_day;
calander_view.setCurrentDayTextColor(context.getResources().getColor(R.color.white_color));
//calander_view.setCurrentDayBackgroundColor(context.getResources().getColor(R.color.gray_color));
SimpleDateFormat dateFormatForDisplaying = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
String date_format = dateFormatForDisplaying.format(dateClicked);
SimpleDateFormat simpleDateformat = new SimpleDateFormat("E"); // the day of the week abbreviated
final Calendar calendar = Calendar.getInstance();
try {
Date date = dateFormatForDisplaying.parse(date_format);
calendar.setTime(date);
calendar.add(Calendar.DATE, 1);
String nex = dateFormatForDisplaying.format(calendar.getTime());
Date d1 = dateFormatForDisplaying.parse(nex);
String day_1 = simpleDateformat.format(d1);
next_day = nex + ", " + day_1;
} catch (ParseException e) {
e.printStackTrace();
}
return next_day;
}
Java.time.LocalDate.now()
.plusDays( 1 )
Alle anderen Antworten sind veraltet und verwenden die lästigen alten Klassen Date
& Calendar
oder das Joda-Time-Projekt, das sich jetzt im Wartungsmodus befindet. Der moderne Ansatz verwendet die Klassen Java.time.
LocalDate
Die Klasse LocalDate
repräsentiert einen Datumswert ohne Uhrzeit und ohne Zeitzone.
Eine Zeitzone ist für die Bestimmung eines Datums von entscheidender Bedeutung. Für jeden Moment variiert das Datum weltweit je nach Zone. Zum Beispiel ist ein paar Minuten nach Mitternacht in Paris Frankreich ein neuer Tag, während noch „gestern“ in Montréal Québec .
Wenn keine Zeitzone angegeben ist, wendet die JVM implizit ihre aktuelle Standardzeitzone an. Diese Standardeinstellung kann sich jederzeit ändern, sodass Ihre Ergebnisse variieren können. Es ist besser, Ihre gewünschte/erwartete Zeitzone explizit als Argument anzugeben.
Geben Sie ein richtiger Zeitzonenname im Format continent/region
An, z. B. America/Montreal
, Africa/Casablanca
oder Pacific/Auckland
. Verwenden Sie niemals die Abkürzung mit 3-4 Buchstaben wie EST
oder IST
, da diese nicht echte Zeitzonen sind, nicht standardisiert und nicht einmalig (!) .
ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;
Von diesem LocalDate
können Sie rechnen, um den folgenden Tag zu bekommen.
LocalDate tomorrow = today.plusDays( 1 ) ;
Um einen String zu generieren, der den Wert des Objekts LocalDate
darstellt, rufen Sie toString
für Text auf, der gemäß dem Standard ISO 8601 formatiert ist: YYYY-MM-DD
.
Durchsuchen Sie Stack Overflow nach DateTimeFormatter
, um Zeichenfolgen in anderen Formaten zu generieren.
Das Java.time Framework ist in Java 8 und höher. Diese Klassen ersetzen die lästigen alten Legacy Datum-Uhrzeit-Klassen wie - Java.util.Date
, Calendar
, & SimpleDateFormat
.
Das Joda-Time -Projekt, das sich jetzt im Wartungsmodus befindet, rät zur Migration in die Java.time -Klassen.
Weitere Informationen finden Sie im Oracle Tutorial . Durchsuchen Sie Stack Overflow nach vielen Beispielen und Erklärungen. Spezifikation ist JSR 31 .
Woher bekommen Sie die Java.time-Klassen?