Java 数据库中输入的日期格式不正确
我正在使用以下日期代码来格式化从dd-mm-yyyy到yyyy-mm-dd-hh:mm:ss的日期。但有几天我在生产中错误地使用了以下代码:Java 数据库中输入的日期格式不正确,java,date,simpledateformat,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 s
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
因此,在有人帮助之前,请继续努力。我对该解决方案所提供的内容持乐观态度。 您可能不太清楚,但通过将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();
}
}
因此,要获得正确的日期,可以像这样使用
LocalDate
类
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy / MM / dd");
LocalDate ld = LocalDate.now();
System.out.println("Current date - " + df.format(ld));
有关java中日期和时间的更多信息,请参阅上的此java程序。恐怕您的年份在插入表之前已被截断。在这种情况下,可能无法重建原始值。您可能需要手动替换坏日期。没有截断年的问题,因为我会考虑它2016,所以我能检索月和日期吗?也许……尝试清理数据,如果你可以看看这个:试着用另一种方式。我的意思是
format.format()
而不是format.parse()
来获取原始日期。但我担心它可能不起作用,因为它很复杂,因为您也使用了sql Date。