2013-04-08 30 views
0

我有這兩個方法,現在寫。隨着情況的發展,當我從數據庫中獲取數據字段時,它是BigDecimal格式。所以我決定爲它寫一個測試(formatDate()方法)。我將BigDecimal傳遞給該方法,但似乎我寫了一些錯誤的代碼。從我在例子和SimpleDateFormat API中看到的,我認爲我已經正確地編寫了代碼,但是我似乎無法弄清楚如何讓它拋出parseEx。有人能給我提示發生了什麼嗎?SimpleDateFormatter拋出ParseException

private void loadMap() { 
    //TODO: Uncomment when finished testing. 
    //DO OTHER STUFF 
    BigDecimal bd = new BigDecimal(12051998); 
    System.out.println(formatDate(bd)); 
} 

private String formatDate(BigDecimal bd) { 
    String value = bd.toString(); 
    SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); 
    try { 
     return format.parse(value); 
    } catch (ParseException pEx) { 
     logger.error(pEx); 
     return "Bad Date Format"; 
    } 
} 

由於提前,向那,

  • 約什
+2

'BigDecimal'是用於保持日期值的奇數選擇。 – GriffeyDog 2013-04-08 14:40:23

+0

@GriffeyDog它是AS/400上用於DB2的IBM/Genelco軟件。一切都很奇怪。 – ResourceReaper 2013-04-08 14:44:15

+0

答案是好的,但你也可以考慮使用[喬達時間](http://joda-time.sourceforge.net/userguide.html) – durron597 2013-04-08 14:50:43

回答

5
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); 

應該是

SimpleDateFormat format = new SimpleDateFormat("MMddyyyy"); 

return format.parse(value); // 值應是日期類型不是字符串

試試這個將日期的格式從MMddyyyy更改爲MM/dd/yyyy:它對我來說工作正常。

public static void main(String[] args) throws ParseException { 
    BigDecimal bd = new BigDecimal(12051998); 
    String s = bd.toString(); 
    System.out.println(s); 
    DateFormat originalFormat = new SimpleDateFormat("MMddyyyy"); 
    DateFormat targetFormat = new SimpleDateFormat("MM/dd/yyyy"); 
    Date date = originalFormat.parse(s); 
    String formattedDate = targetFormat.format(date); 
    System.out.println(formattedDate); 
} 

輸出:

12051998 
12/05/1998 
+0

我已經更新了方法到MMddyyyy我得到的消息是:無法解析的日期:「12051998」 – ResourceReaper 2013-04-08 14:43:32

+0

@JoshGooding您想將日期的格式從MMddyyyy更改爲MM/dd/yyyy? – 2013-04-08 14:47:33

+0

是的,我想將12051998轉換爲12/05/1998。有效。我不知道我必須在日期基本上進行雙重轉換。我嘗試了一步,並沒有意識到。似乎你無法一步到位。謝謝! – ResourceReaper 2013-04-08 15:31:11

相關問題