2010-06-10 4 views

ответ

5

Нашли полезный сайт: 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}; 
    } 
+0

ja = (int) injulian; является ошибкой, измените ее на ja = (int) julian; – RealHowTo

0

ли вы на самом деле означает дату юлианского, как использовать астрономы? Порядковые даты, которые указаны как год (четыре цифры) и день в течение этого года (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 вместо этого, в зависимости от приложения.

0

Я вижу, что уже имеется достаточно ответов. Но любой вопрос, связанный с календарем, отвечает только наполовину без упоминания joda-time ;-). Here как это просто с этой библиотекой

// setup date object for the Battle of Hastings in 1066 
Chronology chrono = JulianChronology.getInstance(); 
DateTime dt = new DateTime(1066, 10, 14, 10, 0, 0, 0, chrono); 
3

простой способ здесь, и это будет возвращать около 100% точной информации.

String getDobInfo(double doubleString){ 
     SweDate sweDate = new SweDate(doubleString); 
     int year = sweDate.getYear(); 
     int month = sweDate.getMonth(); 
     int day = sweDate.getDay(); 
     // getting hour,minute and sec from julian date 
     int hour = (int) Math.floor(sweDate.getHour()); 
     int min = (int) Math 
       .round((sweDate.getHour() - Math.floor(hour)) * 60.0); 
     int sec = (int) (((sweDate.getHour() - Math.floor(hour)) * 60.0 - Math 
       .floor(min)) * 60.0); 
     return "DOB:(DD:MM:YY) "+day+":"+month+":"+year+" TOB:(HH:MM:SS) "+hour+":"+min+":"+sec; 
    } 

скачайте Swiss Ephemeris library и наслаждайтесь кодированием !!!

1

Начиная с Java 8, это становится один вкладыш, чтобы получить LocalDate:

LocalDate.MIN.with(JulianFields.JULIAN_DAY, julianDay) 
.format(DateTimeFormatter.ofPattern("MM/dd/yyyy")); 

Где julianDay Ваш 7-значный номер.

Смежные вопросы