2012-08-16 4 views
0

J'essaye de convertir la chaîne de date de Json au format de date de java. Cependant, il donne une erreur quand il s'agit de la ligne "return df.parse (tarih)".Comment puis-je convertir Json Date en Java Date

JSON:

{"DateFrom":"\/Date(1323087840000+0200)\/"} 

code Java:

private Date JSONTarihConvert(String tarih) throws ParseException 
{ 


    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz"); 


    if (tarih.endsWith("Z")) { 
     tarih = tarih.substring(0, tarih.length() - 1) + "GMT-00:00"; 
    } else { 
     int inset = 6; 


     String s0 = tarih.substring(6, tarih.length()-1 - inset); 
     String s1 = tarih.substring(tarih.length()- inset,tarih.length()-2); 

     tarih = s0 + "GMT" + s1; 
    } 


     return df.parse(tarih); 

} 

Quand j'appelle cette méthode, paramètre tarih est:/Date (1323087840000 + 0200)/

+2

Quelle est exactement l'erreur et vous pouvez également afficher un exemple de tarih? :) – yoshi

+0

La date fournie n'a pas de '-'. Ensuite, vous transformez cette chaîne dans une autre chose sans '-', aussi. Alors votre format de date ne peut pas l'analyser correctement car il s'attend à ce que '-'. – helios

+0

Tarih est la date du turc, fondamentalement tarih est la date de JSON qu'il essaye d'analyser. – JMelnik

Répondre

4

Comme vous êtes intéressé par un objet Date et le JSON se produit à moi pour être un timestamp unix.
Par conséquent, je vous recommande le constructeur Date(long milliseconds) :)

private Date JSONTarihConvert(String tarih) throws ParseException{ 
    long timestamp = getTimeStampFromTarih(tarih); 
    return new Date(timestamp); 
} 

getTimeStampFromTarih extrait les millisecondes avant l'apparition de "+"

+0

Cela a résolu mon problème, merci. – essbek

1

Sauf si vous avez une raison Pour ne pas le faire, vous devriez utiliser un analyseur pour sérialiser et désérialiser les objets. Comme Jackson analyseur.

1

Cela fonctionnera sûrement

String date = "/Date(1376841597000)/"; 
Calendar calendar = Calendar.getInstance(); 
String datereip = date.replace("/Date(", "").replace(")/", ""); 
Long timeInMillis = Long.valueOf(datereip); 
calendar.setTimeInMillis(timeInMillis); 
System.out.println(calendar.getTime().toString("dd-MMM-yyyy h:mm tt"));//It Will Be in format 29-OCT-2014 2:26 PM 
2

Première chaîne de remplacement comme ceci:

String str= ConvertMilliSecondsToFormattedDate(strDate.replace("/Date(","").replace(")/", ""));

convertissons ensuite comme ceci:

public static String ConvertMilliSecondsToFormattedDate(String milliSeconds){ 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(Long.parseLong(milliSeconds)); 
    return simpleDateFormat.format(calendar.getTime()); 
}