0

我现在有这两种方法。在这种情况下,当我从数据库中获取一个数据字段时,它是 BigDecimal 格式。所以我决定为它写一个测试(formatDate() 方法)。我将 BigDecimal 传递给该方法,但似乎我写错了这段代码的一些片段。从我在示例和 SimpleDateFormat API 中看到的内容来看,我认为我已经正确编写了代码,但我似乎无法弄清楚让它抛出 parseEx 出了什么问题。有人可以告诉我发生了什么吗?

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";
    }
}

在此先感谢,最热烈的问候,

  • 乔什
4

1 回答 1

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

应该

SimpleDateFormat format = new SimpleDateFormat("MMddyyyy");

return format.parse(value);// value 应该是 Date 类型而不是 String

尝试将日期格式从 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
于 2013-04-08T14:37:27.707 回答