我在java中有一个String。我想将它转换为Date。我使用过SimpleDateFormat。但问题是,如果我传递dd-mm-yy而不是dd-mm-yyyy,那么它也会解析String并转换为Date。以下是代码
private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
public static void main(String args[]){
Date d = null;
String dat="14-01-16 21:59:59";
try {
d = dateFormat.parse(dat);
}
catch (ParseException e){
e.printStackTrace();
}
System.out.println(d.toString());
}
理想情况下,它会在dateFormatter中显示抛出异常,我将格式设为 dd-MM-YYYY ,但在字符串中我已经通过 dd-MM-YY 格式。那么有没有办法只允许那些只有 dd-MM-YYYY 格式的字符串,并且不允许使用 dd-MM-YY 格式的字符串。
答案 0 :(得分:3)
如果您不想接受YY,只接受YYYY,请使用正则表达式:
private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
public static void main(String args[])
{
Date d = null;
String dat="14-01-16 21:59:59";
try
{
if(!dat.matches("\\d\\d-\\d\\d-\\d\\d\\d\\d.*"))
throw new ParseException(dat, 7);
d = dateFormat.parse(dat);
}
catch (ParseException e)
{
e.printStackTrace();
}
}