用Java解析日期/时间字符串

时间:2013-11-04 19:43:29

标签: java date

执行以下代码时,出现 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);

我想我理解为什么,因为我没有对输入进行消毒。我想知道解决这个问题的最佳方法是什么。任何解析日期的帮助都将不胜感激。

(P.S。当我试图发现错误时,会弹出另一个奇怪的问题,即:

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。对此的任何帮助也将不胜感激。)

1 个答案:

答案 0 :(得分:0)

我是guestcal,birthcal是 java.util.Calendar 类的对象引用(我看不到引用的定义)。

如果您更改了上一行(birthcal.setTime(birth);)

为:

Calendar birthcal = Calendar.getInstance();
birthcal.setTime(birth);
你不会有问题。如果你离开

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

您将获得java.lang.NullPointerException,因为您的代码正在尝试将“出生”设置为空。