0

JavaでExcelからXMLへの変換を行っています。次の形式の Excel ワークシートに 1 つの日付フィールドがあります: dd/mm/yyyy

Excel ワークシートでレコードを読み取るときに、Java コードでフォーマットを検証する必要があります。次のコードがありますが、実際には機能していません。どんな入力でも本当に役に立ちます。

注:ワークシートでどのような形式を変更しても、空白のままです。

public void setEffectiveDate(String effectiveDate) {

    boolean result = isValidDateFormat(effectiveDate);

    if(result == true){
        Date date = HSSFDateUtil.getJavaDate(Double
                .parseDouble(effectiveDate));
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        this.effectiveDate = dateFormat.format(date);

    }
    else{
        this.effectiveDate = null;
    }

}

public static boolean isValidDateFormat(String date) {
    boolean isValid = false;
    Date date2 = HSSFDateUtil.getJavaDate(Double
            .parseDouble(date));
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Calendar cal = Calendar.getInstance();
    try {
        cal.setTime(sdf.parse(date));
        if (date2.equals(sdf.format(cal.getTime()))) {
            isValid = true;
        }
    } catch (Exception e) {
        isValid = false;
    }
    return isValid;
}   
4

1 に答える 1

0

これがSDFクラスの寛大なモードの問題かどうかは疑問です。false に設定する必要があります。そうしないと、数値が「近い」日付に変換されます。

于 2013-09-13T23:18:53.197 に答える