2012-01-22 31 views
2

已棄用的java.sql.Date構造函數更爲直觀 - Date(int year, int month, int day)。但是現在我們需要使用新的java.sql.Date(長日期)。使用具有長整型值的java.sql.Date構造函數

我無法找到關於如何編寫實際的長日期的文檔。除了使用java.util.Date().getTime()之外,還有其他的方法可以在java中構建sql日期嗎?

+3

時間讓Jon Skeet提起喬達時間吧? –

回答

3

日期(年,月,日)不推薦使用的原因是因爲它的語言環境是無知的。如果您只想使用標準Java類,則標準方法是Calendar.getInstance,然後使用生成的Calendar的.set方法設置年,月和日。然而,正如我在3年的StackOverflow中學到的,更好的方法是使用Joda

+0

另一種方法是使用DateFormat將字符串解析爲日期,並調用getTime()。 –

+0

好的,我已經下載Joda Time的jar。基於查找一些關於喬達時間和SQL的指南,如這裏http://stackoverflow.com/questions/1071800/how-to-use-jodatime-with-java-sql-timestamp,我明白如何使用構造函數的作品。 – harryo

+0

但鏈接中的示例僅提供從JodaTime到時間戳的轉換。如果我想將JodaTime轉換爲java.sql.Date,以便通過java類將其插入到我的數據庫中,該怎麼辦? – harryo

0

我認爲jdk替代(年,月,日)構造函數將使用Calendar類,這有點麻煩,因爲你必須獨立設置字段。

但是,正如Paul所說,如果您可以將jar添加到您的項目中,使用Joda Time是一個很好的選擇。

+0

哎呀,我的帖子太慢了 –

1

這是從年,月和日創建java.sql.Date的快捷方法。它格式化日期字符串並使用Date.valueOf(String)。

/** 
* Create a java.sql.Date from from year, month, and day of the month. 
*/ 
private java.sql.Date createSqlDate(int year, int month, int day) { 

    // Create a date string with leading zeros for month and day. 
    String dateString = String.format("%d-%02d-%02d", year, month, day); 

    return java.sql.Date.valueOf(dateString); 
} 
相關問題