2012-06-13 29 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'方法。 –

相關問題