我使用以下日期代码来格式化日期,从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
所以要努力直到有人帮忙。
答案 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程序。