首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将java.util.Date转换为org.joda.time.DateTime?

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

Stack Overflow用户
提问于 2012-01-02 10:18:48
回答 2查看 2.5K关注 0票数 2

我必须使用java.util.Date类作为表中的字段类型。但是我想在DateTime的帮助下更改date字段的显示格式(confortable,首选使用),这就是为什么我想将日期转换为DateTime的原因。

我知道我监督了一些事情,因为在堆栈溢出中没有这样的问题:),但是我找不到DateTime构造函数之间的解决方案,等等。反向转换DateTime.toDate();存在,但是相反的方式呢?

谢谢你提前给我答案。

政务司司长

EN

回答 2

Stack Overflow用户

发布于 2012-01-02 12:44:32

在Vaadin中,如果您想在没有joda的表中更改显示格式,只需重写protected String formatPropertyValue(Object rowId, Object colId, Property property)方法。

下面是一个这样做的例子:

代码语言:javascript
运行
复制
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);
        }

    };

问候

爱立克

票数 1
EN

Stack Overflow用户

发布于 2014-10-19 02:06:22

是的,使用Joda-Time

绝对使用尤达-时间或Java8中的java.time包 (受Joda-Time的启发)。旧的java.util.Datejava.util.Calendar类是众所周知的麻烦、混乱和过时的。

同时,阅读UTCISO 8601上的维基百科页面。

是的,把日期传递给Joda-Time Constructor

的确,您可以将java.util.Date对象传递给Joda-Time DateTime对象的构造函数

API文档有点混乱,因为这显然属于作为java.lang.Object实例的构造函数的所有版本。如果该对象实际上是一个java.util.Date,Joda-Time将提取它的毫秒计数自纪元,并使用该数字作为自己的。

时区

DateTime构造函数还分配一个时区。默认情况下,将分配JVM当前的默认时区。我建议您始终传递所需的时区,而不是隐式地依赖默认值,即使这意味着调用getDefault

示例代码

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

代码语言:javascript
运行
复制
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.

转储到控制台。

代码语言:javascript
运行
复制
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 );

跑的时候。

代码语言:javascript
运行
复制
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.Date,请调用toDate

代码语言:javascript
运行
复制
java.util.Date date = dateTimeMontreal.toDate();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8699656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档