我有两种现在编写的方法。随着场景的发展,当我从数据库中获取数据字段时,它采用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";
    }
}


在此先感谢您,最诚挚的问候,


乔希

最佳答案

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


应该

SimpleDateFormat format = new SimpleDateFormat("MMddyyyy");


return format.parse(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

关于java - SimpleDateFormat引发ParseException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15881948/

10-13 03:42