在数据库中输入格式错误的日期

时间:2016-12-10 13:17:31

标签: java date simpledateformat

我使用以下日期代码来格式化日期,从dd-mm-yyyy到yyyy-mm-dd hh:mm:ss。但是有些日子我错误地在生产中使用了以下代码:

try {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        java.util.Date utilDate = format.parse("22-10-2016 00:00:00");
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
        System.err.println(sqlDate);
     } catch (Exception e) {
     }

,其日期为0028-04-07

所以现在在我的情况下,我有大约300个由于它而格式错误的条目,有没有办法得到正确的日期?

我看到日期后面的模式:

23-10-2016 --> 0029-04-07
24-10-2016 --> 0030-04-08
25-10-2016 --> 0031-04-08
26-10-2016 --> 0032-04-07

所以要努力直到有人帮忙。

2 个答案:

答案 0 :(得分:2)

我对解决方案提供的内容持乐观态度。 您可能不太清楚,但是通过将2016年放入日期,Java会自动推进它。因此,如果您的年份为23岁,那么它将被推进近6年。 我认为这个示例代码,将为您提供相当多的方法。我认为,由于这是一个支持问题并且不会被长时间忽视,因此只会影响2016年。

public static void main(String[] args) throws IOException
{
    try
    {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        java.util.Date utilDate = format.parse("0030-04-07");
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
        Calendar cal = Calendar.getInstance();
        cal.setTime(utilDate);
        cal.add(Calendar.DAY_OF_MONTH, -(2016-1));
        System.out.println(cal.get(Calendar.YEAR));
        System.out.println(cal.get(Calendar.MONTH));
        System.out.println(cal.get(Calendar.DAY_OF_MONTH));
        System.out.println(cal.get(Calendar.HOUR));
        System.out.println(cal.get(Calendar.MINUTE));
        System.out.println(cal.get(Calendar.SECOND));
        Date time = cal.getTime();
        System.err.println(time);
        cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.YEAR));
        cal.set(Calendar.YEAR, 2016);
        time = cal.getTime();
        System.err.println(sqlDate);
        System.out.println(time);


    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

}

答案 1 :(得分:0)

因此,要获得正确的日期,您可以使用LocalDate这样的课程,

DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy / MM / dd");
LocalDate ld = LocalDate.now();    
System.out.println("Current date - " + df.format(ld));

有关java中日期和时间的更多信息,请参阅datetime上的此java程序。