將 Joda-Time DateTime 轉換為 Date,反之亦然
一、簡介
Joda-Time 是一個非常流行的關於日期和時間操作的 Java 庫。它提供了比標準DateTime
類別通常提供的更直觀和靈活的 API。
在本教程中,我們將了解如何將 Joda-Time DateTime
物件轉換為標準 Java Date
對象,反之亦然。
2. 設定 Joda-Time
首先,我們應該確保我們的專案包含joda-time
庫:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.12.6</version>
</dependency>
或者,我們可以下載jar 檔案並將其放入我們的classpath
。
3. 將 Joda-Time DateTime
轉換為 Java Date
要將 Joda-Time DateTime
物件轉換為標準 Java Date
我們使用名為toDate()
的方法。下面是一個簡單的例子:
@Test
public void givenJodaDateTime_whenConvertingToJavaDate_thenConversionIsCorrect() {
DateTime jodaDateTime = new DateTime();
java.util.Date javaDate = jodaDateTime.toDate();
assertEquals(jodaDateTime.getMillis(), javaDate.getTime());
}
在這個測試方法中,我們從 Joda-Time 建立一個名為jodaDateTime
的新DateTime
實例。隨後,我們呼叫這個Joda
DateTime
實例的toDate()
方法來取得對應的java.util.Date
物件。
使用assertEquals
方法執行測試,該方法斷言從原始Joda DateTime
物件檢索的時間(以毫秒為單位)等於從透過java.util.Date
建立的新DateTime
物件取得的時間。
4. 將 Java Date
轉換為Joda-Time DateTime
將普通 Java Date
物件轉換為 Joda-Time DateTime
也很簡單。我們可以使用為java.util.Date
參數設計的DateTime
建構函數,如下所示:
@Test
public void givenJavaDate_whenConvertingToJodaDateTime_thenConversionIsCorrect() {
java.util.Date javaDate = new java.util.Date();
DateTime jodaDateTime = new DateTime(javaDate);
assertEquals(javaDate.getTime(), jodaDateTime.getMillis());
}
在上面的測試方法中,我們主動實例化一個新的java.util.Date
對象,表示當前日期和時間。隨後,我們使用提供的 Java Date
建立對應的 Joda DateTime
物件。實際驗證使用assertEquals
方法進行,我們驗證從原始java.util.Date
物件檢索的時間(以毫秒為單位)是否等於Joda DateTime
物件表示的時間
5. 結論
總之,在 Java 中處理日期和時間時的常用操作之一是在 Joda-Time DateTime
物件和標準 Java Date
之間進行轉換。
現在我們已經完成了上面介紹的範例,我們應該很容易在專案中實作 Joda-Time 並輕鬆轉換這兩種類型。
與往常一樣,隨附的源代碼可以在 GitHub 上找到。