Подскажите пожалуйста, как в java перевести строку 63672393600 в дату, чтобы не придумывать велосипед?
Строка - это дата в секундах от рождества Христова.
результат должен получиться - 2018-09-13 12:26:42 (это данные из базы, из которой вытянули данные с этой датой и конвертировали в секунды).
LocalDateTime ldt = LocalDateTime.of(1, Month.JANUARY, 1, 12, 26, 42);
LocalDateTime resDate = ldt.plusSeconds(63672393600L);
System.out.println("resDate = " + resDate);
Вывод:
resDate = 2018-09-13T12:26:42
Как правильно заметил комментатор @default locale@, непонятно почему время не 00:00. Если считать, что Хр родился в 12:26:42, тогда все сходится.
Ну если грубо, то как-то так:
long seconds = 63672393600L;
//первое число первого месяца первого года
GregorianCalendar calendar = new GregorianCalendar(1, 0, 1);
//метод add не работает с long, поэтому переводим в миллисекунды для добавления
calendar.setTimeInMillis(calendar.getTimeInMillis()+seconds*1000);
Date date = calendar.getTime(); //11.09.2018
Вы не написали, какой календарь нужно использовать для рассчетов. В Java GregorianCalendar использует гибридный: с переходом с юлианского на григорианский в октябре 1582-го. Если нужен другой расчет, то потребуются уточнения. (Про часовые пояса я даже не говорю).
Демонстрация на ideone: https://ideone.com/sRWAS4
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости