簡體   English   中英

SimpleDateFormat和解析:解析不會因錯誤的輸入字符串日期而失敗

[英]SimpleDateFormat and parsing: parse doesn't fail with wrong input string date

我正在使用

java.util.Date date;
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
try {
  date = sdf.parse(inputString);
} catch (ParseException e) {
  e.printStackTrace();
}

其中inputStringdd/MM/yyyy格式的字符串。

例如,如果inputString是40/02/2013,我將獲得一個錯誤,而parse方法將返回Date 2013年3月12日(2013年3月12日)。 我錯了什么?

設置寬松位

public void setLenient(boolean lenient)

指定日期/時間解析是否寬松。 通過寬松的解析,解析器可以使用啟發式來解釋與該對象的格式不完全匹配的輸入。 通過嚴格的解析,輸入必須與此對象的格式匹配。

以下代碼:

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Tester {
    public static void main(String[] argv) {
        java.util.Date date;
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

        // Lenient
        try {
            date = sdf.parse("40/02/2013");
            System.out.println("Lenient date is :                  "+date);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        // Rigorous
        sdf.setLenient(false);

        try {
            date = sdf.parse("40/02/2013");
            System.out.println("Rigorous date (won't be printed!): "+date);
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }
}

得到:

Lenient date is :                  Tue Mar 12 00:00:00 IST 2013
java.text.ParseException: Unparseable date: "40/02/2013"
    at java.text.DateFormat.parse(DateFormat.java:357)

筆記

  1. 如果對Java類有疑問,閱讀類文檔應該是您的第一步。 我不知道你的問題的答案,我只是用Google搜索了這個類,點擊了解析方法鏈接並注意到了See Also部分。 您應該首先搜索,並在問題中提及您的發現
  2. 寬容的約會有一個令人尊敬的歷史繞過審查制度激發孩子們的想象力

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM