我想验证并使用格式为“yyyymmdd”的simpleDateFormat解析日期。 这也允许解析为10年(在Julius Ceasar死后54年)的100624。日期也会像1970年一样,所以我不想与SimpleDateFornat(“yymmdd”)解决。在java的simpledateformat中强制使用4位数字
我想知道有没有办法强制使用SimpleDateFormat四位数年份格式?我接近做一个正则表达式测试,但也许有一个聪明的方法来使用(简单)DateFormat()?
根据要求的代码,事情变得越来越复杂,我的研究是一半。使用的格式是yyyy-MM-dd(它来自一个变量,它有一个错误的javadoc)。然而,正如下面的答案中所表明的,yyyyMMdd确实需要四年的数字。所以我的问题改为如何强制“yyyy-MM-dd”格式的四位数年份。为什么“yyyyMMdd”表现不同?
public void testMaturity() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
System.out.println(" " + sdf.format(sdf.parse("40-12-14")));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd");
sdf.setLenient(false);
System.out.println(" " + sdf2.format(sdf2.parse("401214")));
fail();
} catch (ParseException pe) {
assertTrue(true);
}
它打印0040-12-14
如果日期需要YYYYMMDD那么10年将是0010。我没有看到任何问题,你不要让他们在第一天(01)或第一个月输入1,那么为什么允许它多年。 – Goibniu 2010-06-24 09:15:28