我目前正在尝试解析日期(和时间),将它们从纪元转换为毫秒。
为此,我使用SimpleDateFormat进行解析,代码如下:
public static long parseDate(String date) {
// Parse
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
Date parsedDate = format.parse(date);
// Get milliseconds
Calendar cal = new GregorianCalendar();
cal.setTime(parsedDate);
return cal.getTimeInMillis();
}
玩弄我发现SimpleDateFormat允许解析1970-00-00,解析为1969-11-30。考虑一下,这完全有道理。当解析器只是"总和"一切都使1969年实际上被理解为' 1969-11-30'和0 monts a"年溢出"没有发生。 不幸的是,我没有更改此日期无效的任何内容(至少我理解日期)。
有没有办法通过不使用第三方库或java 8(目标是Android)来添加验证,还是必须手动使用正则表达式和验证?
提前谢谢!
答案 0 :(得分:1)
呃我很抱歉发布了这个问题...
答案是用以下方法禁用lenient标志:
format.setLenient(false);
我不会删除这个问题,所以如果有人偶然发现这个问题,就不需要花费数小时来弄清楚如何改变这个......希望它有所帮助!
这也引出了一个问题,为什么默认情况下会启用此标志?