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

は、JSONの属性です。この日付を解析するにはどうすればよいですか? 次のコードを試しました。異なるロケールにあるタイムスタンプを読み取る

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だけで正常に動作します。ただし、 ۲۰۱۵-۱۱-۰۲T۱۸:۴۴:۳۴+۰۰:۰۰IllegalArgumentExceptionをスローします。他のロケール/フォーマットで日付を解析しようとしました。運がない。

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

私を助けてください。

+0

、あなたはアラビア解析がサポートされているかどうかをソースコードに見てきた:下記(入力日付とパターンの両方で<スペース>にTを変更)してみてください? – RAnders00

答えて

2

アラビア語以外の文字(T)を追加すると、アラビア語以外の日付になりました(Google翻訳で翻訳しようと考えています)。データ形式は、単にJavaのデータライブラリでサポートされない可能性があること

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"); 
     } 
    } 
} 
関連する問題