2012-06-13 28 views
0

我想通过解析它然后格式化它,但它不工作的格式日期。我想在java中SimpleDateFormat日期

它是呈现出异常解析

public java.util.Date convertFormat(String DateTimeForm) 
        throws ParseException { 
DateTimeForm="2012-06-01 10:00 PM"; 
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm aaa"); 
java.util.Date FCDate = (java.util.Date) formatter.parse(DateTimeForm); 

return (java.util.Date) FCDate; 

} 
+2

也许显示错误日志会帮助 – Raykud

+1

并提供您的语言环境。 –

+2

除了作为一种方法没有意义(因为您完全忽略了传入的值),所显示的代码没有任何问题。它按您想要的方式编译和行为(我认为)。你可以发布你的语言环境吗? –

回答

1

这在我的机器上正常工作。我没有改变任何重要的东西。

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm aaa"); 
    Date date = null; 
    try { 
     date = formatter.parse("2012-06-01 10:00 PM"); 
    } catch (ParseException ex) { 
     // Intentionally empty. Failed parse causes date == null. 
    } 
    System.out.print(date); 

打印

Fri Jun 01 22:00:00 EDT 2012 

的Java文档说NUMERICS都是语言环境无关,但不是AM/PM。例如,如果在格式化程序构造中指定Locale.JAPAN,代码将失败。指定Local.US以保证AM/PM始终有效。

+0

真的不好主意给一个新手显示一个空的catch块。 –

+0

我添加了一条评论,以说明为什么在这种情况下这是一个合理的事情。 – Gene

+0

是的,然后你打印出来。 –

1
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm aaa"); 
try { 
    Date date = formatter.parse("2012-06-01 10:00 PM"); 
    System.out.println(date.toString()); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

没有改变任何东西,但它的工作原理。

Fri Jun 01 22:00:00 CDT 2012 
+0

谢谢它是工作,但我不知道为什么当我抛出异常它不工作,但当我尝试赶上它工作。 –

+0

@ VICKY-TSC寻找Java ['DateFormat#parse']是什么原因(http://docs.oracle.com/javase/6/docs/api/java/text/DateFormat.html#parse(java .lang.String))方法文档,它说抛出ParseException,'SimpleDateFormat#parse'是'DateFormat'的子类,继承'parse'方法。 –

相关问题