2016-12-10 57 views
1

我使用以下日期格式將日期從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

恐怕您的年份可能在您將其插入表格之前被截斷。在這種情況下,可能無法重建原始值。您可能需要手動更換錯誤的日期。 –

+0

年份沒有問題,因爲我會考慮2016年,所以我能夠檢索月份和日期? –

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

} 
0

因此,要獲得正確的日期,你可以使用LocalDate類這樣的,

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

有關java中日期和時間的更多信息,請參閱關於datetime的此Java程序。