0

私は現在書かれているこれらの2つの方法を持っています。シナリオが進むにつれて、データベースからデータ フィールドを取得すると、それは 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);//値は String ではなく Date 型である必要があります

日付の形式を 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 に答える