私はXmlDateTimeオブジェクトためのインスタンス化について尋ねたが私はもう少し前に同様の問題に遭遇しました。 XmlDateTimeがxmlに出力される方法は、内部表現の値によって決まります。内部表現の値は、その値を提供するために呼び出されたセッターに依存します。問題は、setDate(...)メソッドにありました。
XmlDateTimeのデフォルトの実装では、内部的にdatetimeの値をGDateBuilderを使用して構築されたorg.apache.xmlbeans.GDateとして保持します。 XmlDateTimeオブジェクトに日付を設定すると、最終的に値がGDateBuilderに渡されます。 XmlDateTimeオブジェクトがsetGDate(...)メソッドを持ってい
Sets the current time and date based on a java.util.Date instance.
The timezone offset used is based on the default TimeZone. (The default TimeZone is consulted to incorporate daylight savings offsets if applicable for the current date as well as the base timezone offset.)
If you wish to normalize the timezone, e.g., to UTC, follow this with a call to normalizeToTimeZone.
ので、あなたは、このようnormalizeメソッドをテストすることができます:あなたはSETDATE()メソッドのソースを見れば は、javadocツールは、と述べている
印刷された私のためにこの
XmlDateTime xmlDateTime = XmlDateTime.Factory.newInstance();
xmlDateTime.setStringValue("2002-10-10T12:00:00-05:00");
System.out.println(xmlDateTime.xmlText());
GDateBuilder gdb = new GDateBuilder(xmlDateTime.getDateValue());
gdb.normalize();
xmlDateTime.setGDateValue(gdb.toGDate());
System.out.println(xmlDateTime.xmlText());
:私はそれがUTCで印刷するために得ることができる唯一の方法だった
<xml-fragment>2002-10-10T12:00:00-05:00</xml-fragment>
<xml-fragment>2002-10-10T17:00:00Z</xml-fragment>
。
悲しいことに、私はそれを見つけることができませんでしたが、私はどのようにXmlDateTimeオブジェクトのインスタンスを作成している
...、より良い方法がある願っていますか?あなたは 'XmlDateTime.Factory.NewInstance()'と 'setDate(...)'の行に沿って何かを使っていますか? –
それはその形式でXMLとして入ってきますが、フォローアップシステムはそれを処理できません。したがって、UTC形式に変換する必要があります。実際には私はこれがもはや問題ではないことを知りましたが、私はこのケースをどのように処理するかについてまだ興味があります。 – GrkEngineer