2014-11-23 58 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) { 
      } 

     } 

感谢