2010-06-10 21 views

Respuesta

5

encontrado un sitio útil: http://www.rgagnon.com/javadetails/java-0506.html

Esto debe hacer el truco:

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; es un error, cámbielo a ja = (int) julian; – RealHowTo

0

¿Realmente quiere decir la fecha juliana, al igual que los astrónomos usan? Las fechas ordinales, que se especifican como un año (cuatro dígitos) y el día dentro de ese año (3 dígitos), a veces se llaman incorrectamente fechas julianas.

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); 
} 

Esto le dará la fecha a las 00:00 hora local; es posible que desee establecer la zona horaria en los calendarios en GMT, según la aplicación.

0

Veo que ya hay suficientes respuestas. Pero cualquier pregunta relacionada con el calendario solo se responde a medias sin mencionar joda-time ;-). Here es lo fácil que es con esta biblioteca

// 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

forma sencilla es aquí y esto devolverá el 100% aprox información precisa.

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; 
    } 

descarga el Swiss Ephemeris library y disfruta de la codificación !!!

1

A partir de Java 8, esto se convierte en una sola línea para obtener el LocalDate:

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

Dónde julianDay es su número de 7 dígitos.

Cuestiones relacionadas