如何使用给定的格式将给定的String转换为java中的日期?

时间:2014-10-27 12:49:33

标签: java date datetime

我在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 格式的字符串。

1 个答案:

答案 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();
    }
}