Wie konvertiert man Monate bis Jahre und Monate in java
Im neu in java und ich möchte konvertieren von Monaten bis Jahren. Zum Beispiel, Wenn ich hatte 18 Monate und gliedert sich, dass von 12, ich hätte 1,5 Jahre, aber ich möchte es als 1Jahr und 6Monate.
Vielen Dank für Ihre Hilfe.
- Dies ist eine Mathe-Frage, es hat nichts zu tun mit Java.
- Überhaupt nicht irrelevant für Java. Zwei ausgereifte frameworks gebaut worden, um solche Arbeit in Erster Joda-Time und nun java.Zeit erbaut in Java 8 und höher. Während diesem speziellen Fall gehandhabt werden kann, indem der Mathematik, stehen die Chancen gibt es viel andere date-time-Arbeit einbezogen werden. Mit dem java.Zeit-Klassen macht eine solche Arbeit mehr selbst dokumentieren mit der Absicht, mehr klar, als mit einfachen integer-math. Plus die Vorteile der integrierten Unterstützung für das ISO-8601-Format, die Leichtigkeit der Betrachtung dieser Daten die Werte in der debugger und meldet (und den Austausch von Daten zu).
- In dem speziellen Fall der Umwandlung Monate bis Jahre, es ist immer 12 Monate im Jahr, eine einfache division und modulo.
- Gewährt. Für die Aufrechterhaltung der code, Lesen
period.getYears()
undperiod.getMonths()
ist viel schneller zu erkennen und sicherer zu Debuggen alsmonths / 12
undmonths % 12
. Plus, wenn der Programmierer die Arbeit an diesem bestimmten code, wird Sie vermutlich arbeiten an weiteren Datum-Zeit-code. Mit einem Datum-Zeit-Rahmen macht, dass der code einheitlicher und leichter zu Lesen. Aber, jedem das seine oder Ihre eigene.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie den modulo -
%
.double
->int
Zuordnung bereits Etagen. Außerdem wird die Zeile nicht kompiliert überhaupt. Vielleicht du einen Fehler gemacht hast in deinem realen code nicht sichtbar in der Informationen so weit.java.Zeit
Den java.Zeit framework ist in Java 8 und höher. Diese Klassen verdrängen die alten lästige Datum-Zeit-Klassen wie
java.util.Date
,.Calendar
, &java.text.SimpleDateFormat
. Die Joda-Time team berät zudem die migration auf java.Zeit.Um mehr zu erfahren, siehe die Oracle Tutorial. Und die Suche Stack Overflow für viele Beispiele und Erklärungen.
Viel von java.Funktionalität ist zurück-portiert auf Java 6 & 7 in ThreeTen-Backport und weiter angepasst werden, um Android in [ThreeTenABP]
(https://github.com/JakeWharton/ThreeTenABP).
Den ThreeTen-Extra Projekt erweitert die java.mal mit zusätzlicher Klassen. Dieses Projekt ist ein Testgelände für mögliche künftige Erweiterungen zu java.Zeit. Sie finden möglicherweise einige nützliche Klassen, die hier wie
Interval
,YearWeek
,YearQuarter
und mehr.Period
Den
Zeit
- Klasse verfolgt einen Zeitraum von Zeit, die sich nicht auf die Zeitleiste, in Bezug auf Jahre, Monate und Tage. Sicher sein, rufen Sienormalisiert
als eine Gewohnheit, es zu zwingen neu zu berechnen achtzehn Monate in Bezug auf ein Jahr und sechs Monate.Extrahieren Sie die Anzahl der Jahre und Monate.
Können Sie anrufen
toString
zu vertreten, ist dieser Wert in standard ISO 8601 format für "Dauer":PnYnMnDTnHnMnS
. In diesem format dieP
markiert den Anfang, währendT
trennt die Jahre-Monate-Tage-Anteil von Stunden-Minuten-Sekunden-Teil (irrelevant bei dieser Frage).