2013-01-03 12 views
5

カレンダーオブジェクトをYYYY-MM-DD HH:mm:ssの形式でXMLグレゴリオ暦に変換する際に問題があります。特定の書式を使用してカレンダーをXMLGregorianCalendarに変換する

私の現在のコードは次のとおりです。2013-01-03T11:50:00.000-05:00の日付を返します

Calendar createDate = tRow.getBasic().getDateCreated(0).getSearchValue(); 
Date cDate = createDate.getTime(); 
GregorianCalendar c = new GregorianCalendar(); 
c.setTime(cDate); 
XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c); 

2013-01-03 11:50:00をお読みください。

DateFormatを使用して日付の文字列表現を解析する投稿がチェックされていますが、日付は文字列ではなくCalendarオブジェクトとして提供されます。

私はこれを理解するのに役立つ正しい方向に軽く感謝したいと思います。

答えて

2

アンたXMLGregorianCalendarは、変更することはできません特定のW3Cの文字列表現を持っています。

Dateは、SimpleDateFormatでフォーマットできます。

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
String dateStr = dateFormat.format(cDate); 

次のようにあなたはXMLGregorianCalendarオブジェクトからDateオブジェクトを取得することができます。

xmlCalendar.getGregorianCalendar().getDate() 
+1

私はたXMLGregorianCalendarから日付を取得する必要があるのではなく、それを設定しないでください。 XMLGregorianCalendarは、受信側のWebサービスで必要です。 –

+0

そうですが、デフォルトと異なるように日付を書式化する場合は、 'Date'オブジェクトを使用する必要があります。それらのうちの1つから始めるので、XMLGregorianCalendarはまったく必要ないはずです。 –

+0

ええ、私はXMLGreg ... Dateから生成されたクラスを編集するのを避けることができたと思っていましたが、私はとにかく持っているように見えます –

1

DateFormat#formatは、Objectパラメータをとります。メモリから、それはない場合、あなたはあなたがカスタム書式を指定するSimpleDateFormatのインスタンスを使用することができます最悪のシナリオ

としてCalendar#getTimeを使用することができますので、それは、Dateオブジェクトを受け入れる、Calendarオブジェクトを受け入れる必要があります。これは結果が異なるシステムで常に同じであることを保証します

0

このチュートリアルは役に立ちましたか?

http://www.vogella.com/articles/JavaDateTimeAPI/article.html

Speicifcallyこのコードは良い例です。

// Format the output with leading zeros for days and month 
SimpleDateFormat date_format = new SimpleDateFormat("yyyyMMdd"); 
System.out.println(date_format.format(cal1.getTime())); 
関連する問題