Преобразовать числовое значение "используя метод Excel" в дату - Java - PullRequest
0 голосов
/ 09 марта 2019

У меня есть целое число, которое при добавлении в Google Sheets представляет дату 14/10/1911 (целочисленное значение равно 4305).

Мне нужно сделать то же самое преобразование в моем коде, используя Java. Поэтому у меня будет массив целых чисел, который уменьшается в 1 раз (например, 4305, 4304, 4303 ...), и мне нужно преобразовать эти целые числа в дату (14/10/1911, 13/10/1911, 10.12.1911 ...) используя тот же метод, что и Excel / Sheets.

Есть идеи?

Спасибо

1 Ответ

1 голос
/ 09 марта 2019
    LocalDate msBaseDate = LocalDate.of(1899, Month.DECEMBER, 30);
    int[] integers = { 4305, 4304, 4303 };
    for (int integerValue : integers) {
        LocalDate date = msBaseDate.plusDays(integerValue);
        System.out.println(date);
    }

Вывод из этого фрагмента:

1911-10-14
1911-10-13
1911-10-12

Excel и другие продукты Microsoft и, возможно, другое программное обеспечение также используют 30 декабря 1899 г. в качестве базовой даты и представляют датыкак количество дней с этой даты.Так что просто добавьте номер к этой дате.Я использую LocalDate из java.time, современный API даты и времени Java.

Вопрос: Могу ли я использовать java.time на Android?

Да, java.time прекрасно работает настарые и новые устройства Android.Для этого требуется как минимум Java 6 .

  • В Java 8 и более поздних версиях и на более новых устройствах Android (начиная с уровня API 26) современный встроенный API.
  • В Java 6 и 7 получают ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. Ссылки внизу).
  • На (более старых) Android используется версия ThreeTen для AndroidBackport.Это называется ThreeTenABP.И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp с подпакетами.

Ссылки

...