我想验证一个实际上是一个字符串的日期,试图以yyyy/MM/dd
格式打印它。 下面是代码。使用dateformat验证日期
String s="2012/12/0390990";
SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(ft.format(ft.parse(s)));
并且输出是3083/05/30
。我也想要验证。不知道如何继续。
我想验证一个实际上是一个字符串的日期,试图以yyyy/MM/dd
格式打印它。 下面是代码。使用dateformat验证日期
String s="2012/12/0390990";
SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(ft.format(ft.parse(s)));
并且输出是3083/05/30
。我也想要验证。不知道如何继续。
默认情况下为宽松。在解析之前,您需要设置它non-lenient。
ft.setLenient(false);
这将导致ParseException
当一个无效的日期和/或月份进行比较,以年为供应。请注意,这不会验证年份本身,因为基本上任何年份都是有效的。根据具体的功能要求,您可能需要在一年中进行额外的检查,例如,在/
然后分割字符串检查,如果第1部分的长度为4
您可以更好地使用正规验证输入,
见例如这样的回答:
https://stackoverflow.com/a/2149692/1448704
塞巴斯蒂安
DateFormat比这个任务的正则表达式更合适。 – Keppil
但为什么宽松的解析会导致一个似乎与输入不同的日期... –
@Miserable:390990天约为1071年。它的字面意思是被解释成月份/年份,以适应月份的持续时间。你最终进一步大约1071年。 – BalusC