繁体   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