2014-11-23 85 views
1

我需要解析一個字符串日期在Java中。當使用完整的日期模式有問題的情況是,它依賴於一個特定的區域(我不知道以前)解析一個字符串日期沒有區域設置

例如,使用模式「EEEE MMMM DD YYYY」兩種可能的輸入是:

英語=「10日星期五2014年11月」

西班牙語=「Viernes 10 Noviembre 2014」

是否有可能上面輸入轉換爲Date對象,而不知道源語言環境?

謝謝。

+1

我不認爲這是可能的'單獨SimpleDateFormat'。 – Drux 2014-11-23 21:10:16

+2

你需要爲每個'Locale'提供一個'SimpleDateFormat',你可能會遇到,然後你需要簡單地循環它們直到一個工作... – MadProgrammer 2014-11-23 21:33:45

+0

可能的重複[如何使用多種格式解析日期的SimpleDateFormat](http://stackoverflow.com/questions/4024544/how-to-parse-dates-in-multiple-formats-using-simpledateformat) – 2014-11-24 00:06:11

回答

0

我嘗試MadProgrammer解決方案,它的工作原理:

 String dateInString = "Friday 10 November 2014"; 
     //String dateInString = "Viernes 10 Noviembre 2014"; 
     Locale localeList[] = DateFormat.getAvailableLocales(); 

     Date date = null; 

     for (Locale l : localeList) { 
      try { 

       SimpleDateFormat formatter = new SimpleDateFormat("EEEE dd MMMM yyyy", l); 

       date = formatter.parse(dateInString); 
       System.out.println("Trying with locale: " + l.toString()); 
       break; 
      } catch (ParseException e) { 
      } 

     } 

感謝