簡體   English   中英

將C#DateTime轉換為XML dateTime類型

[英]Convert a C# DateTime to XML dateTime type

這個問題的變體已經問過幾十遍了,但是我需要的解決方案似乎非常難以捉摸。 我希望這次是魅力!

我有一個C#應用程序,正在通過SOAP xml與Java Web服務進行通信。 該應用程序已使用WSDL導入了服務,而沒有出現問題。 但是,xml對象之一的類型為dateTime。

<complexType name="Interaction">
    <sequence>
        <element name="ContactDate" type="dateTime" minOccurs="0" maxOccurs="1"/>
    </sequence>
</complexType>

我有一個從數據庫中檢索到的日期,看起來像這樣:2013-07-10。 我需要使用UTC格式將其放入XML dateTime對象中:yyyy-MM-ddTHH:mm:ss.fffzzz

我可以輕松地將其轉換為正確解析的字符串。 那不是問題。 當我嘗試將數據加載到服務對象時,會發生此問題。 我無法將數據作為字符串加載。 它必須是DateTime對象,但DateTime拒絕使用UTC格式。

我認為這可能是序列化的問題。 我認為在轉換為xml以發送到Web服務時,它無法正確序列化。 這是此特定元素的序列化信息:

[System.Xml.Serialization.XmlElementAttribute(Order=2)]
public System.DateTime ContactDate {
    get {
        return this.contactDateField;
    }
    set {
        this.contactDateField = value;
        this.RaisePropertyChanged("ContactDate");
    }
}

關於我可能會丟失或做錯的任何想法? 任何幫助將不勝感激。 謝謝!

您使用Z表示UTC。 這是你的問題嗎?

您可以在此處了解更多信息: http : //www.w3.org/TR/xmlschema-2/#dateTime-timezones

因此, 2002-10-10T07:00:00Z是2002年10月10日,世界標准時間0700。

最后,這是我們為這個問題想到的非常不幸的答案。 無論如何我們都無法識別出強制C#正確序列化為datetime格式的方法。 為了解決這個問題,我們最終更改了Java Web服務的WSDL,將類型更改為字符串。 將其設置為字符串后,其他一切顯然都很容易。

complexType name="Interaction">
    <sequence>
        <element name="ContactDate" type="string" minOccurs="0" maxOccurs="1"/>
    </sequence>
</complexType>

暫無
暫無

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

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