Soweit zu verstehen, geht es dir darum, das aktuelle Jahrhundert irgendwie dynamisch zu kartieren. Was dazu:
public static void main(String[] args) {
System.out.println(mapToCurrentCentury(16, 11));
System.out.println(mapToCurrentCentury(116, 11));
System.out.println(mapToCurrentCentury(1116, 11));
}
private static YearMonth mapToCurrentCentury(int year, int month) {
if(year < 1000) {
YearMonth now = YearMonth.now();
return now.withYear(((now.get(ChronoField.YEAR)/1000) * 1000) + (year % 1000)).withMonth(month);
}
else {
return YearMonth.of(year, month);
}
}
Es um die Zuordnung zu Ihrem aktuellen Jahrhundert behandelt, sondern erkennt auch über einen absoluten Jahre Wert.
Ausgang ist:
2016-11
2116-11
1116-11
Korrekter als 'YearMonth.of (2000 + Jahr, Monat);'? Ist das Jahr in einem "int"? Kann es zweistellig oder auch vierstellig sein? Bitte posten Sie weitere Informationen, warum die direkte Lösung Sie nicht zufriedenstellt. – Tunaki
Wenn Sie möchten, dass es als ein Jahr im 20. Jahrhundert interpretiert wird, fügen Sie 1900 statt 2000 hinzu. (Oder meintest du das 21. Jahrhundert?). Wie auch immer, was ist falsch daran, 1900 oder 2000 hinzuzufügen? Es gibt keine Möglichkeit, automatisch 'YearMonth' das für Sie tun zu lassen. – Jesper
@Tunaki wie geschrieben der Jahreswert wird immer als zweistelliger Wert angegeben. – membersound