所以如果打印 01/18/2013 我得到 JUNE 01, 2014 或者如果我打印 08/18/2013 我得到 JUNE 08, 2014 我应该更改什么才能获得英文格式日期的正确输出?
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date givenDate = formatter.parse(s);
SimpleDateFormat formatterprint = new SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH);
System.out.println(formatterprint.format(givenDate).toUpperCase());
最佳答案
用于解析日期的模式是dd,MM,yyyy
,这意味着日后跟逗号,后跟月,后跟逗号,后跟年。
您输入08/18/2013
。 08 是有效日期,但 18 不是有效月份。并且您应该输入逗号,而不是斜杠。
由于您输入 18/2013 作为月份,因此它会被解释为 2013 年的第 18 个月,对应于 2014 年的第 6 个月(因为年份只有 12 个月):6 月。
关于java - 日期和simpledateformat,输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107407/