我java.text.SimpleDateFormat用来解析形式的字符串"yyyyMMdd"。
java.text.SimpleDateFormat
"yyyyMMdd"
如果我尝试解析一个大于12的月份的字符串,而不是失败,它将延续到下一年。完全可运行的复制:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class ParseDateTest { public static void main(String[] args) throws ParseException { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); Date result = format.parse("20091504"); // <- should not be a valid date! System.out.println(result); // prints Thu Mar 04 00:00:00 CST 2010 } }
我宁愿ParseException抛出。
ParseException
是否有任何非hacky方式强制发生异常?我的意思是,我不想手动检查月份是否大于12。这太荒谬了。
感谢您的任何建议。
注意:我已经了解Joda Time,但是我需要在没有外部库的普通JDK中完成此操作。
您需要使其不宽容。从而,
format.setLenient(false);
应该这样做。