2017-08-09 92 views
-2

我正在做一些junit測試。我得到的日期作爲日期如下形式響應:如何驗證兩種不同格式的日期

2017-08-14 00:00:00.0 +0:00 

這是目前在Oracle中的數據DB是

14-AUG-17 12.00.00.000000000 AM +00:00 

我想用這樣的斷言,但它失敗。任何人都可以幫助確保預期的和實際的匹配。

Assert.assertEquals("14-08-2017", 2017-08-14 00:00:00.0 +0:00); 
+0

在Oracle中,日期沒有格式[它存儲爲7或8字節](https://stackoverflow.com/documentation/oracle/2087/dates/6848/the-format -of-A-日期)。如果格式應用於日期,則由訪問數據庫的用戶界面完成。在SQL/Plus或SQL開發者的情況下,格式由'NLS_DATE_FORMAT'會話參數決定;其他接口(例如Java)可能會應用不同的默認格式,或者可能僅以原始[字節格式]存儲它(https://docs.oracle.com/cd/E16338_01/appdev.112/e13995/oracle/sql/TIMESTAMP。 HTML)。 – MT0

回答

1

您可以創建兩個Date對象和斷言。

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); 
try { 
    Date parsedDate1 = formatter.parse("14-08-2017"); 
    System.out.println(parsedDate1); 

    SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd"); 
    Date parsedDate2 = formatter2.parse("2017-08-1 00:00:00.0 +0:00"); 
    Assert.assertEquals(parsedDate1, parsedDate2); 

} catch (ParseException e1) { 
} 
+0

謝謝。有用 – user2326831

1

您可以使用SimpleDateFormat從日期製作字符串。

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
Assert.assertEquals("14-08-2017", sdf.format(<your date instance>)); 
+0

「你的日期實例」的意思。我有一個字符串,格式爲「2017-08-14 00:00:00.0 +0:00」。你的意思是說我應該像這樣Assert.assertEquals(「14-08-2017」,sdf.format(2017-08-14 00:00:00 +0:00)); – user2326831

+0

謝謝,它的工作 – user2326831