[英]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.