В классе Date
Java 1.0 использовались 1900-летние годы, поэтому 119 будет означать, например, 2019 год. Это использование устарело уже в Java 1.1 более 20 лет назад, поэтому удивительно, что оно сохранилось в Scala.
Когда вы говорите 6-значное значение , я принимаю его за число (не строку).
Ответ от jwvh правильный. Мой вариант будет выглядеть так (извините за код Java, пожалуйста, переведите себя):
int value = 119003;
int year1900based = value / 1000;
int dayOfYear = value % 1000;
LocalDate date = LocalDate.ofYearDay(year1900based + 1900, dayOfYear);
System.out.println(date);
2019-01-03
Если у вас есть строка, я бы разделил ее только на две части, 119 и 003 (а не на три части, как в вашем комментарии). Разобрать каждый в int
и продолжить, как указано выше.
Если вам нужен формат 2019/01/03
в выводе, используйте для этого DateTimeFormatter
. Внутри вашей программы сохраните LocalDate
, а не String
.