2012-01-02 85 views
1

我必須在表中使用java.util.Date類作爲字段類型。 但我想改變日期字段的顯示格式與喬達時間的幫助(confortable,首選使用),這就是爲什麼我想將日期轉換爲日期時間。如何將java.util.Date轉換爲org.joda.time.DateTime?

我知道我監督的東西,因爲在stackoverflow中沒有這樣的問題:)但我找不到DateTime構造函數之間的soulution等等。 反向轉換DateTime.toDate(); 存在,但相反的方式呢?

感謝您提前給出答案。

+0

可能出現重複http://stackoverflow.com/questions/5042587/convert-from-java-util-date-to-jodatime – Xorty 2012-01-02 10:21:41

+0

好了,它的作品,感謝,但根據API沒有這樣的接受日期的構造函數...再次感謝,也許我誤解了一些東西。 – cscsaba 2012-01-02 10:34:15

+0

不客氣:) – Xorty 2012-01-02 11:12:59

回答

1

在Vaadin,如果你想改變顯示格式不喬達一個表,你只需重寫方法protected String formatPropertyValue(Object rowId, Object colId, Property property)

下面一個例子來做到這一點:

Table t = new Table() { 

     @Override 
     protected String formatPropertyValue(Object rowId, Object colId, 
       Property property) { 
      Object v = property.getValue(); 
      if (v instanceof Date) { 
       Date dateValue = (Date) v; 
       return new SimpleDateFormat("yyyy-MMMM-dd").format(dateValue); 
      } 
      return super.formatPropertyValue(rowId, colId, property); 
     } 

    }; 

問候

Éric

+0

謝謝艾瑞克,但是很多人都爲此感到高興,這就是爲什麼我想了解一點。但我感謝你的努力。 – cscsaba 2012-01-02 16:56:45

0

是的,使用Joda-Time

當然在Java 8中使用Joda-Timejava.time package(受Joda-Time啓發)。舊的java.util.Datejava.util.Calendar班是出了名的麻煩,混亂和過時。

此外,請閱讀有關UTCISO 8601的維基百科頁面。

是,通日期爲喬達時間構造

➔的確不錯,你可以傳遞一個java.util.Date對象的喬達時間DateTime對象的constructor

該API文檔有點混亂,因爲這顯然落入構造函數的catch-all版本採取java.lang.Object實例。如果該對象實際上是java.util.Date,則Joda-Time將提取其毫秒數,因爲它自己的數字爲epoch

時區

一個DateTime構造還分配一個時區。默認情況下,JVM的當前默認時區已分配。我建議你總是通過一個期望的時區,而不是默認依賴默認即使這意味着調用getDefault

示例代碼

以下是在約達時間2.5一些示例代碼示出了如何將一個java.util.Date傳遞到約達時間的構造函數。

java.util.Date date = new java.util.Date(); 
DateTimeZone zone = DateTimeZone.forID("America/Montreal"); 
DateTime dateTimeMontreal = new DateTime(date , zone); 
DateTime dateTimeUtc = dateTimeMontreal.withZone(DateTimeZone.UTC); // Adjust to another time zone. 

轉儲到控制檯。

System.out.println("date: " + date); // Misleading output. A j.u.Date is in UTC but its toString method applies JVM’s current default time zone. 
System.out.println("dateTimeMontreal: " + dateTimeMontreal); 
System.out.println("dateTimeUtc: " + dateTimeUtc); 

運行時。

date: Sat Oct 18 18:54:55 PDT 2014 
dateTimeMontreal: 2014-10-18T21:54:55.740-04:00 
dateTimeUtc: 2014-10-19T01:54:55.740Z 

如問題所示,從日期時間到java.util.Date去,叫toDate

java.util.Date date = dateTimeMontreal.toDate(); 
相關問題