2012-01-02 6 views
1

テーブルのフィールドタイプとしてjava.util.Dateクラスを使用する必要があります。 しかし、私はジョダ時間の助けを借りて、日付フィールドの表示形式を変更したいと思いますが、私は日時に日付を変換したい理由厥(快適、使用することを好ま)。java.util.Dateをorg.joda.time.DateTimeに変換するにはどうすればよいですか?

は、私はそこにstackoverflowの中にはそのような質問はありません:)が、私はそうでDateTimeのコンストラクタとの間でsoulutionを見つけることができなかったので、私は、何かを監督知っています。 逆変換DateTime.toDate(); が存在しますが、反対の方法はどうですか?

お返事ありがとうございます。

Csの

+0

可能重複http://stackoverflow.com/questions/5042587/convert-from-java-util-date-to-jodatime – Xorty

+0

[OK]を、それが、おかげで動作しますが、APIに応じてそのようなはありませんDateを受け入れるコンストラクタ...もう一度おねがいします。多分私は何かを誤解しました。 – cscsaba

+0

あなたは歓迎です:) – Xorty

答えて

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

ありがとうエリック、しかし多くの人賞jodatime thatsなぜ私は少し知りたいです。しかし、私はあなたの努力に感謝します。 – cscsaba

0

はい、Joda-Timeを使用してください。

Java 8のJoda-Timeまたはjava.time packageを使用してください(Joda-Timeから影響を受けています)。古いjava.util.Datejava.util.Calendarのクラスは非常に面倒で、混乱し、時代遅れです。

また、UTCISO 8601上のWikipediaのページをお読みください。

はい

、ジョダタイムコンストラクタ

➔に渡し日は、はい確かに、あなたはジョダタイムDateTimeオブジェクトのconstructorjava.util.Dateオブジェクトを渡すことができます。

APIドキュメントは、これが明らかにjava.lang.Objectインスタンスを取るコンストラクタのキャッチオールバージョンに該当するため、少し混乱します。そのオブジェクトが実際にjava.util.Dateである場合、Joda-Timeはそのミリ秒カウントをepochから抽出し、その数値を独自のものとして使用します。

タイムゾーン

DateTimeコンストラクタは、時間帯を割り当てます。デフォルトでは、JVMの現在のデフォルトタイムゾーンが割り当てられています。私はあなたが常には、希望の時間帯を渡すのではなくそれがgetDefaultを呼び出す意味場合でも、デフォルトで暗黙的に依存しているお勧めします。ここで、実施例コード

はJodaのタイムコンストラクタにjava.util.Dateを渡す方法を示すJodaのタイム2.5でいくつかのサンプルコードです。

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); 

実行時。

java.util.DateへのDateTimeから行くために、質問に示すように
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 

toDateを呼び出します。

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

関連する問題