2016-01-24 89 views
0

我正在运行的问题,当我试图将字符串转换为java.util.Date。解析日期不工作

我的日期格式如下:Jan 23 2016 4:00:24 PM我想将该字符串转换为Date对象。所以要做到这一点,我使用SimpleDateFormat与参数,根据javadoc:MMM dd yyyy aa。

但是当我跑步时我的代码,我现在遇到一个java.text.ParseException:无法解析的日期:“2016年1月23日下午四点00分24秒”

可能是我的什么问题?

谢谢!

编辑:有问题的代码

String dateStr = "Jan 23 2016 4:00:24 PM"; 
SimpleDateFormat parserSDF = new SimpleDateFormat("MMM dd yyyy hh:mm:ss aa"); 
Date date = parserSDF.parse(dateStr); 
+0

的'MMM'图案是区域设置相关。您可以尝试明确指定区域设置:'SimpleDateFormat parserSDF = new SimpleDateFormat(“MMM dd yyyy hh:mm:ss aa”,Locale.US);' –

+0

是的,添加locale.US是有帮助的,感谢您的帮助! – user3127125

回答

0

你是什么系统默认的区域设置?你可以用Locale.getDefault()方法调用来检查它。我试过你的代码,使用默认的en_US语言环境适合我。但我试图使用另一个(我用中文)并且遇到了同样的错误。

尝试使用SimpleDateFormat parserSDF = new SimpleDateFormat("MMM dd yyyy hh:mm:ss aa", Locale.US);与明确定义的区域设置

0

此代码运行对我很好,并产生输出周六1月23日16时○○分24秒EST 2016

String text = "Jan 23 2016 4:00:24 PM"; 
    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy hh:mm:ss aa", Locale.US); 
    try { 
     System.out.println(sdf.parse(text)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

呃,这很奇怪,你的代码仍然在我的电脑上引发异常....可能是因为我使用的JDK? (1.8u60) – user3127125

+0

这很奇怪。我可以使用Java 8运行良好的程序。尝试使用此网站:http://www.tutorialspoint.com/compile_java8_online.php –