2015-12-09 17 views
7
numaralı

bir JSON bir özelliğindeki okuma zaman damgası okundu. Bu tarihi nasıl ayrıştırırım? Aşağıdaki kod parçasını denedim.Farklı bir yerel

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 gayet çalışır. Bununla birlikte, ۲۰۱۵-۱۱-۰۲T۱۸:۴۴:۳۴+۰۰:۰۰, IllegalArgumentException'u atar. Tarihi diğer yerel/formatlarla da ayrıştırmayı denedim. Şanssız.

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

Lütfen bana yardım edin.

+0

, arapça ayrıştırma desteklenip desteklenmediğini kaynak koduna baktım vardır: (< hem giriş tarihi mekan > ve desen değiştirildi T) altına deneyin ? – RAnders00

cevap

2

Arapça olmayan bir karakter (T) eklemek, Arapça olmayan bir tarih yaptı (Google çevirisinde çevirmeyi deneyerek fikrim var).

veri biçimi basitçe java veri kitaplıkları tarafından desteklenmiyor olabilir Yani
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"); 
     } 
    } 
} 
İlgili konular