2013-03-08 78 views
2

由於問題的標題說,java.sql.Date併爲java.sql.Time到org.joda.time.DateTime

我有java.sql.Datejava.sql.Time輸入

現在我想將它們轉換爲一個DateTime對象,但由於getDay,getYear等方法被棄用,我無法弄清楚如何將兩者結合起來...

+0

你能從sql數據類型中得到一個'long',並用它來構造一個joda DateTime嗎? – vikingsteve 2013-03-08 09:49:29

+0

我可以從兩者中得到很長一段時間,但將它們加在一起並不能完成這項工作...... – Luc 2013-03-08 09:58:13

+0

添加這些類型的想法是什麼?它們代表了自大紀元以來的一段時間。 – 2013-03-08 10:02:37

回答

2

只是看看這是否適合你。

Date date = new Date(System.currentTimeMillis()); // Prints 2013-03-08 
Time time = new Time(System.currentTimeMillis()); // Prints 15:40:33 

String myDate = date + " " + time; 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
java.util.Date utilDate = new java.util.Date(); 
try { 
    utilDate = sdf.parse(myDate); // You get a Java Util Date object(Fri Mar 08 15:40:33 IST 2013) 
} catch (ParseException pe) { 
    // TODO something. 
} 

DateTime dateTime = new DateTime(utilDate); // You get your JODA object. 
+0

你好,我很感謝你! – Luc 2013-03-08 10:24:34

+1

使用格式化來構造日期效率低下,並忽略joda時間豐富的API。爲什麼不簡單地將LocalDate和LocalTime合併到DateTime中? – bowmore 2013-03-08 20:42:30

0

只需在java.sql.Time上做一些技巧:計算持續時間。 java.sql.Time隱式地將日期組件設置爲1970年1月1日。

java.sql.Date epoch = new Date(70, 0, 1); 
    java.sql.Date date = new Date(113, 2, 8); 
    java.sql.Time time = new Time(1, 1, 1); 
    DateTime dt = new DateTime(date.getTime()) 
      .plus(time.getTime() - epoch.getTime()); 
    System.out.println(date); 
    System.out.println(time); 
    System.out.println(dt); 
1

您可以創建之日起,DateTime對象,並添加一個Duration對象到DateTime對象,導致單個對象whcih是由你的輸入表示的時間日期+時間瞬間。

類似以下內容:

Date d = //your Date 
Time t = //your time 

DateTime result = new DateTime(d).plus(t.getTime()); 

這將導致表示要即時不可變對象.... II正確理解你的問題,你以後有什麼是「增加」兩個辦法代表時間的不同班級。

相關問題