java 使用 simpledateformat 解析输入字符串得到 ParseException,并且只是因为 space
java use simpledateformat to parse a input String get ParseException, and just because of a space
我输入了一个字符串,就像询问的 SimpleDateFormat 模式一样,但它会是 ParseException。我做了几个测试。如果我把"dd HH"之间的space改成"dd-HH",pattern就变成了"yyyy-MM-dd-HH:mm:ss",就成功了。
第二个测试是我直接写一个字符串像
String birthdays = "1998-08-12 12:12:12";
并解析它,它也会成功。
所以我的结论是我输入的 space 与模式中的 space 不同。我用的是IntelliJ
SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Scanner sc = new Scanner(System.in);
System.out.println("Please input your birthday. the pattern is " +
"yyyy-MM-dd HH:mm:ss");
String birthday = sc.next();
Date date2 = datef.parse(birthday);
// String birthdays = "1998-08-12 12:12:12";
// Date date2 = datef.parse(birthdays); //this will successful
System.out.println(date2);
而不是使用 sc.next() 使用 sc.nextLine()
sc.next() 会找到 space 之前的第一个字符串,但 nextLine() 会接受整个字符串,包括 space.
这个问题不是因为 space。
我输入了一个字符串,就像询问的 SimpleDateFormat 模式一样,但它会是 ParseException。我做了几个测试。如果我把"dd HH"之间的space改成"dd-HH",pattern就变成了"yyyy-MM-dd-HH:mm:ss",就成功了。
第二个测试是我直接写一个字符串像
String birthdays = "1998-08-12 12:12:12";
并解析它,它也会成功。
所以我的结论是我输入的 space 与模式中的 space 不同。我用的是IntelliJ
SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Scanner sc = new Scanner(System.in);
System.out.println("Please input your birthday. the pattern is " +
"yyyy-MM-dd HH:mm:ss");
String birthday = sc.next();
Date date2 = datef.parse(birthday);
// String birthdays = "1998-08-12 12:12:12";
// Date date2 = datef.parse(birthdays); //this will successful
System.out.println(date2);
而不是使用 sc.next() 使用 sc.nextLine()
sc.next() 会找到 space 之前的第一个字符串,但 nextLine() 会接受整个字符串,包括 space.
这个问题不是因为 space。