这是 Java DateFormat 错误吗?
模式是“dd-MM-yyyy”
我认为字符串“01-01-2010mwwwwwwwwwwwwwww”不满足该模式,但下面的代码显示相反的情况。
任何人都可以解释为什么吗?
public static void main(String[] args) throws Exception {
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
Date date = df.parse("01-01-2010mwwwwwwwwwwwwwww");
System.out.println(date);
}
谢谢
The pattern is "dd-MM-yyyy"
I think the string "01-01-2010mwwwwwwwwwwwwwww" does not satisfy the pattern, but the following code shows the contrary.
Anyone can explain why?
public static void main(String[] args) throws Exception {
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
Date date = df.parse("01-01-2010mwwwwwwwwwwwwwww");
System.out.println(date);
}
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
parse 方法不会尝试匹配整个输入字符串。也就是说,前缀
01-01-2010
匹配,这就足够了。来自
DateFormat.parse
:如果您需要确定它是否是“完全匹配”,您可以尝试以下操作
:
The parse method does not try to match the entire input string. That is, the prefix
01-01-2010
matches, and that's enough.From
DateFormat.parse
:If you need to figure out if it was a "complete match", you could try the following:
This prints
这是因为 DateFormat 的默认 lenient 参数为 true。这意味着解析器将解析输入字符串,即使它的格式不正确。这(有时)会导致不正确的结果。
另一方面,我们可以强制解析器严格遵守给定的模式。这意味着不正确的输入字符串将引发异常。
It's because the default lenient parameter for DateFormat is true. This means the parser will parse input string even though it's in incorrect format. Which will (sometime) lead to incorrect result.
On the other hand, we can force the parser to be strict to given pattern. This means an incorrect input string will throw an exception.