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

jest atrybutem w JSON. Jak przeanalizować tę datę? Próbowałem następujący fragment kodu.odczyt znacznika czasu, który jest w innym ustawieniu narodowym

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 Działa dobrze. Jednak ۲۰۱۵-۱۱-۰۲T۱۸:۴۴:۳۴+۰۰:۰۰ wyrzuca IllegalArgumentException. Próbowałem również analizować datę w innych ustawieniach regionalnych/formatach. Brak szczęścia.

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

Proszę mi pomóc.

+0

że format danych może po prostu nie być obsługiwane przez biblioteki danych Java, Pan spojrzał w kodzie źródłowym czy arabski parsowanie jest obsługiwana ? – RAnders00

Odpowiedz

2

Dodanie znaku nie-arabskiego (T) sprawiło, że jest to data nie-arabska (wpadłem na pomysł, tłumacząc go na google translate). Spróbuj poniżej (zmiana T do <przestrzeni> zarówno w dacie wejścia i wzoru):

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