2016-04-08 7 views
1

Ich möchte die Anzahl der Tage zwischen "heute" und dem Geburtstag des Benutzers berechnen, den er/sie eingibt. Dies ist, was sollte das Programm wie folgt aussehen:Anzahl der Tage zwischen heute und Ihrem Geburtstag mit LocalDate-Klasse?

When are you born? 19961020 // the user inputs this 
Today you are xxxx days old. 

Das Datum in diesem Format sein muss: YYYYMMDD. Und das Programm sollte auch Schaltjahre berücksichtigen. Ich habe die LOCALDATE Klasse verwenden:

LocalDate datum = LocalDate.now(); 
int år = datum.getYear(); 
int månad = datum.getMonthValue(); 
int dag = datum.getDayOfMonth(); 

Eine andere Sache, ich habe zu prüfen, während Codierung ist, dass ich meinen eigenen Code zu verwenden, und nicht andere Methoden, die bereits hergestellt werden. Kannst du mir bitte dabei helfen? Ich habe keine Ahnung, wo ich anfangen soll oder wie ich mit meinem Code vorgehen soll.

+1

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#until-java.time.chrono.ChronoLocalDate- vielleicht? (oder die andere "bis") –

+0

siehe auch http://math.stackexchange.com/questions/683312/formula-to-calculate-difference-between-two-dates (für einige "math" -Ansatz) –

+0

können Sie verwenden 'java.util.Calendar' API zB: http: //tutorials.jenkov.com/java-date-time/java-util-calendar.html – gihan

Antwort

0

Die Strings parsen.

Ihre Eingabezeichenfolge entspricht dem Standard ISO 8601-Format. Die Klassen java.time verwenden diesen Standard als Standard beim Analysieren/Generieren von Textdarstellungen von Datums- und Uhrzeitwerten. Sie müssen also kein eigenes Formatierungsmuster angeben. Verwenden Sie eine pre-defined format.

LocalDate birthDate = LocalDate.parse("19961020" , DateTimeFormatter.BASIC_ISO_DATE); 

Holen Sie sich heute. Normalerweise empfehle ich hier eine ZoneId für Genauigkeit, aber geben oder nehmen Sie einen Tag ist hier nicht wirklich wichtig in diesem Szenario.

LocalDate today = LocalDate.now(); 

Fragen Sie nach Tagen zwischen mit der ChronoUnit Klasse.

long days = ChronoUnit.DAYS.between(birthdate , today); 

Period

könnten Sie die Period Klasse verwenden, die eine Zeitspanne als eine Reihe von Jahren, Monaten und Tagen darstellt.

Period period = Period.between(birthdate , today); 
+0

Danke, Basil! Ich werde diese Lösung versuchen –

+0

Es hat funktioniert! Vielen Dank! Aber die Sache ist, gibt es eine Möglichkeit, dass ich das gleiche Ergebnis erzielen kann, ohne all diese Klassen außer der LocalDate-Klasse zu verwenden? Ich muss den Code komplett mit meinem eigenen Code schreiben –

+0

@AdamRana Sie meinen, das ist eine Hausaufgabe in einer Schulklasse? Das solltest du in deiner Frage sagen. –

Verwandte Themen