【发布时间】:2010-12-26 16:58:38
【问题描述】:
我正在使用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。
是否有任何强制异常发生的非hacky方式?我的意思是,我不想手动检查月份是否大于 12。这有点荒谬。
感谢您的任何建议。
注意:我已经知道 Joda Time,但我需要在没有外部库的普通 JDK 中完成。
【问题讨论】: