簡體   English   中英

Axis2 - 日期格式

[英]Axis2 - Date Format

腳本

由Axis2作為對Web服務客戶端的響應輸出的日期格式格式為“2009-08-28 + 01:00”。 我想將此更改為僅顯示沒有時區信息的日期(例如:“2009-08-28”)

組態

圖書館

軸2 1.4.1

WSDL

<xsd:element name="StartDate" type="xsd:date" />;

  • 是否可以更改Axis 2用於寫入日期信息的輸出格式?
  • 你能看到.NET客戶重新轉換這種日期格式有什么問題嗎?

約束

遺憾的是,無法將“StartDate”元素更改為xsd:stringxsd:token


問題改進

因為我正在使用xsd:date XML Data Type,它被定義為

[-]CCYY-MM-DD[Z|(+|-)hh:mm]

因此,如果我設置

Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("UTC");
...

然后輸出看起來像這樣

2009-01-28Z

您可以將“UTC”替換為“GMT”或“”。

我可以擺脫“Z”嗎?

我遇到了同樣的問題,可以從日期中刪除時區!

您可以使用自己創建的ConvertUtil。

首先,您必須使用自定義的轉換方法/方法創建類:

public class myConvertUtil extends org.apache.axis2.databinding.utils.ConverterUtil
    {
    public static String convertToString(Date value)
        {
        // return customized Date format
        }
    }

然后,您必須將此類設置為SYSTEM_PROPERTY_ADB_CONVERTERUTIL

String convert_class = "com.firm.myConvertUtil";
System.setProperty(ConverterUtil.SYSTEM_PROPERTY_ADB_CONVERTERUTIL, convert_class);

使用Calendar對象作為xsd:date字段的源值會導致此問題。 當您獲得Calendar的實例時,它始終與時區一起使用(如果未明確指定,則使用默認時區)。 要刪除時區,請使用clear()方法並恢復除時區之外的所有字段。 然后XML映射庫(我使用XmlBeans測試,但我認為對於Axis支持的其他綁定庫也是如此)生成沒有時區后綴的XML。

Calendar myDate = Calendar.getInstance();   // returns GregorianCalendar
Calendar now = (Calendar)myDate.clone();    // save current timestamp
myDate.clear(); // this clears the fields, including Calendar.ZONE_OFFSET
myDate.set(     //set all fields back from the saved copy
    now.get(Calendar.YEAR),
    now.get(Calendar.MONTH),
    now.get(Calendar.DAY_OF_MONTH),
    now.get(Calendar.HOUR_OF_DAY),
    now.get(Calendar.MINUTE),
    now.get(Calendar.SECOND)
);

你不能。

它的價值空間被描述為ISO 8601第5.4章中日期和時間的組合。它的詞匯空間是擴展格式:

[ - ] CCYY-MM-DDTHH:MM:SS [Z |(+ | - )HH:MM]

時區可以指定為Z(UTC)或(+ | - )hh:mm。 未指定的時區被視為未確定。

http://books.xmlschemata.org/relaxng/ch19-77049.html

編輯:

有關參考,請參閱XML架構第2部分:數據類型第二版3.2.7 dateTime

有一個Calendar#clear方法可以滿足您的需求。 要擺脫時區偏移,只需執行以下操作:

cal.clear(Calendar.ZONE_OFFSET);

請注意,沒有時區偏移的時間不明確。 它讓消費者有時間猜測UTC偏移。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM