Преобразуйте Юлианскую дату в регулярную календарную дату

Как я преобразовываю 7-разрядную юлианскую дату в формат как MM/dd/yyy?

7
задан Mark Acosta 10 June 2010 в 19:54
поделиться

2 ответа

Вы действительно имеете в виду юлианскую дату, которую используют астрономы? Порядковые даты, которые указаны как год (четыре цифры) и день в этом году (3 цифры), иногда неправильно называются юлианскими датами.

static String formatOrdinal(int year, int day) {
  Calendar cal = Calendar.getInstance();
  cal.clear();
  cal.set(Calendar.YEAR, year);
  cal.set(Calendar.DAY_OF_YEAR, day);
  Date date = cal.getTime();
  SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
  return formatter.format(date);
}

Это даст вам дату в 00:00 по местному времени; вы можете вместо этого установить часовой пояс в календарях на GMT, в зависимости от приложения.

1
ответ дан 6 December 2019 в 21:10
поделиться

Нашел полезный сайт: http://www.rgagnon.com/javadetails/java-0506.html

Это должно помочь:

 public static int[] fromJulian(double injulian) {

      int jalpha,ja,jb,jc,jd,je,year,month,day;
      double julian = julian + HALFSECOND / 86400.0;
      ja = (int) julian;
      if (ja>= JGREG) {    

       jalpha = (int) (((ja - 1867216) - 0.25) / 36524.25);
       ja = ja + 1 + jalpha - jalpha / 4;
       }
     jb = ja + 1524;
   jc = (int) (6680.0 + ((jb - 2439870) - 122.1) / 365.25);
   jd = 365 * jc + jc / 4;
   je = (int) ((jb - jd) / 30.6001);
   day = jb - jd - (int) (30.6001 * je);
   month = je - 1;
   if (month > 12) month = month - 12;
   year = jc - 4715;
   if (month > 2) year--;
   if (year <= 0) year--;

   return new int[] {year, month, day};
  }
5
ответ дан 6 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: