如何将java.util.Date转换为org.joda.time.DateTime



我必须使用java.util.Date类作为表中的字段类型。但是我想用joda time来改变日期字段的显示格式(舒适,首选使用),这就是为什么我要将date转换为DateTime。

我知道我监督的东西,因为没有这样的问题在stackoverflow:),但我找不到解决方案之间的DateTime构造器等。反向转换DateTime.toDate();存在,但反过来呢?

谢谢你的回答。

Cs

在Vaadin中,如果想要更改没有joda的表中的显示格式,只需重写方法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);
        }
    };

埃里克

是,使用Joda-Time

一定要使用Joda-Time或java。Java 8中的time包(受Joda-Time的启发)。旧的java.util.Datejava.util.Calendar类是出了名的麻烦、混乱和过时。

同时,请阅读维基百科关于UTC和ISO 8601的页面。

Yes, Pass Date To Joda-Time Constructor

是,你可以java.util.Date对象传递给Joda-Time DateTime对象的构造器。

API文档有点令人困惑,因为这显然属于接受java.lang.Object实例的构造函数的全捕获版本。如果该对象实际上是一个java.util.Date,则Joda-Time将提取其毫秒-count-since-epoch并使用该数字作为自己的数字。

<标题>时区h1> DateTime构造函数也分配了一个时区。默认情况下,分配JVM当前的默认时区。我建议您始终传递所需的时区,而不是隐式地依赖于默认值,即使这意味着调用getDefault。 示例代码

下面是Joda-Time 2.5中的一些示例代码,展示了如何将java.util.Date传递给Joda-Time构造函数。

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

如问题中所示,要从DateTime转到java.util。日期,呼叫toDate

java.util.Date date = dateTimeMontreal.toDate();

相关内容

最新更新