2012-01-02 48 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(); 
相关问题