SimpleDateFormatter抛出ParseException

Res*_*per 0 java simpledateformat parseexception

我现在有两种方法.根据场景,当我从数据库中获取数据字段时,它采用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";
    }
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢Warmest,

  • 玩笑

Ach*_*Jha 5

SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
Run Code Online (Sandbox Code Playgroud)

应该

SimpleDateFormat format = new SimpleDateFormat("MMddyyyy");
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

输出:

12051998
12/05/1998
Run Code Online (Sandbox Code Playgroud)