2010-06-14 4 views
2
Sample Julian Dates: 
2009218 
2009225 
2009243 

Comment puis-je les convertir en une date normale?Julian Date Conversion

J'ai essayé de les convertir en utilisant online converter et je got-

12-13-7359 pour 2.009.225 !! Ça n'a aucun sens!

+1

vos exemples ne sont pas des dates juliennes. une date julienne est le nombre de jours depuis le 1er janvier 4713 avant JC - par exemple 2.451.545 pour le 2000-01-01. (si 2009225 est une date julienne comme vous le voulez, le convertisseur en ligne est bon) – oezi

+0

Je pensais bien mais je n'ai aucune idée de ce genre de dates sont celles! Je ne peux même pas demander. –

+0

ce n'est pas clair pour moi ce que vous essayez de convertir à partir de: Calendrier Julian dates? Ou Modified Julian _Days_ (données astronomiques), comme dans votre lien? Si ces dates commencent par une année, il y a de la place pour l'ambiguïté (est-ce que 2009111 est le 11 janvier ou le 1er novembre?). – McDowell

Répondre

7

Utilisez la bibliothèque Joda-Time et faire quelque chose comme ceci:

String dateStr = "2009218"; 
MutableDateTime mdt = new MutableDateTime(); 
mdt.setYear(Integer.parseInt(dateStr.subString(0,3))); 
mdt.setDayOfYear(Integer.parseInt(dateStr.subString(4))); 
Date parsedDate = mdt.toDate(); 

Utilisation de l'API Java:

String dateStr = "2009218"; 
Calendar cal = new GregorianCalendar(); 
cal.set(Calendar.YEAR,Integer.parseInt(dateStr.subString(0,3))); 
cal.set(Calendar.DAY_OF_YEAR,Integer.parseInt(dateStr.subString(4))); 
Date parsedDate = cal.getTime(); 

---- EDIT ---- Merci pour Alex pour fournir le meilleur réponse:

Date myDate = new SimpleDateFormat("yyyyD").parse("2009218") 
+0

Que diriez-vous du mois? –

+0

MutableDateTime calculera le mois, car il connaît l'année et le jour de l'année. –

+0

Est-ce que je ne peux pas utiliser l'API Java pour faire ça? –

2

Un autre format est CYYDDDD J'ai écrit cette fonction dans Java

public static int convertToJulian(Date date){ 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(date); 
    int year = calendar.get(Calendar.YEAR); 
    String syear = String.format("%04d",year).substring(2); 
    int century = Integer.parseInt(String.valueOf(((year/100)+1)).substring(1)); 
    int julian = Integer.parseInt(String.format("%d%s%03d",century,syear,calendar.get(Calendar.DAY_OF_YEAR))); 
    return julian; 
}