簡體   English   中英

用Java解析日期/時間字符串

[英]Parsing Date/Time strings in Java

執行以下代碼時,出現ParseException錯誤:

String date;
Scanner in = new Scanner(System.in);
System.out.println("Please enter the date of birth, in format 'January 2, 2010'");
date = in.nextLine();
in.close();
Date birth = new Date();
birth = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(date);
birthcal.setTime(birth);

我想我理解為什么,因為我沒有對輸入內容進行消毒。 我想知道解決這個問題的最佳方法是什么。 解析日期的任何幫助將不勝感激。

(PS當我嘗試捕獲該錯誤時,會彈出另一個特殊的問題,即:

String date;
Scanner in = new Scanner(System.in);
System.out.println("Please enter the date of birth, in format 'January 2, 2010'");
date = in.nextLine();
in.close();
Date birth = new Date();
try {
    birth = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(date);
} catch (ParseException e) {
    e.printStackTrace();
}
birthcal.setTime(birth);

這里的問題是NullPointerException 我不知道這怎么可能。 我認為當您使用new Date()初始化時,它會為其設置一個值,這意味着代碼的最后一行至少將指向SOMETHING。 對此的任何幫助也將不勝感激。)

我認為,birthcal是java.util.Calendar類的對象引用(我看不到引用的定義)。

如果更改最后一行(birthcal.setTime(birth);)

至:

Calendar birthcal = Calendar.getInstance();
birthcal.setTime(birth);

您不會有任何問題。 如果你走

Calendar birthcal = null;
birthcal.setTime(birth);

您將得到java.lang.NullPointerException因為您的代碼試圖將“出生”設置為null。

暫無
暫無

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

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