2015-12-09 14 views
7
"timestamp_utc": "۲۰۱۵-۱۱-۰۲T۱۸:۴۴:۳۴+۰۰:۰۰" 

ist ein Attribut in einem JSON. Wie analysiere ich dieses Datum? Ich habe das folgende Stück Code ausprobiert.Zeitstempel lesen, der sich in einem anderen Gebietsschema befindet

try 
{ 
    return new DateTime(dateStr, DateTimeZone.UTC); 
} 
catch (IllegalArgumentException e) 
{ 
    java.util.Locale locale = new java.util.Locale("ar", "SA"); 
    DateTimeFormatter formatter = ISODateTimeFormat.dateTime().withLocale(locale); 
    return formatter.parseDateTime(dateStr); 
} 

2015-05-11T11:31:47 funktioniert gut. ۲۰۱۵-۱۱-۰۲T۱۸:۴۴:۳۴+۰۰:۰۰ löst jedoch eine IllegalArgumentException. Versucht, das Datum auch mit anderen Locales/Formaten zu analysieren. Kein Glück.

Locale list[] = DateFormat.getAvailableLocales(); 
     for (Locale aLocale : list) { 
      try{ 
       DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ").withLocale(aLocale); 
       System.out.println(formatter.parseDateTime(dateStr)); 
      } 
      catch(Exception e){ 
       System.out.println("locale " + aLocale.toString() + " error"); 
      } 
     } 

Bitte helfen Sie mir.

+0

Das Datenformat kann einfach nicht von Java-Datenbibliotheken unterstützt wird, müssen Sie in die Quellcode sahen, ob arabischer Parsing unterstützt wird ? – RAnders00

Antwort

2

Das Hinzufügen eines nicht arabischen Zeichens (T) hat es zu einem nicht arabischen Datum gemacht (ich habe die Idee mit dem Versuch, es in Google Translate zu übersetzen). Versuchen Sie, die unten (geändert T <Raum> in beiden Eingangsdaten und das Muster):

public static void main (String[] args) throws java.lang.Exception 
{ 
    String ara = "۲۰۱۵-۱۱-۰۲ ۱۸:۴۴:۳۴+۰۰:۰۰"; 
    for (Locale aLocale : DateFormat.getAvailableLocales()) { 
     //Just to save time, not needed. 
     if(aLocale.getLanguage() != "ar") continue; 
     try{ 
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss+SS:SS", aLocale); 
      System.out.println(sdf.parse(ara)); 
     } 
     catch(Exception e){ 
      System.out.println("locale " + aLocale.toString() + " error"); 
     } 
    } 
}