簡體   English   中英

將DateTime序列化為時間而不是毫秒和gmt

[英]Serializing DateTime to time without milliseconds and gmt

我使用XSD文件作為輸入創建了一個C#類文件。 我的一個屬性看起來像這樣:

 private System.DateTime timeField;

 [System.Xml.Serialization.XmlElementAttribute(DataType="time")]
 public System.DateTime Time {
     get {
         return this.timeField;
     }
     set {
         this.timeField = value;
     }
 }

序列化時,文件的內容現在如下所示:

<Time>14:04:02.1661975+02:00</Time>

在屬性上使用XmlAttributes,是否有可能在沒有毫秒和GMT值的情況下渲染它?

<Time>14:04:02</Time>

這是可能的,還是我需要在序列化類之后將某種xsl / xpath-replace-magic混合在一起?

它不是將對象更改為String的解決方案,因為它在應用程序的其余部分中像DateTime一樣使用,並允許我們使用XmlSerializer.Serialize()方法從對象創建xml表示。

我需要從字段中刪除額外信息的原因是接收系統不符合time數據類型的w3c標准。

將[XmlIgnore]放在Time屬性上。

然后添加一個新屬性:

[XmlElement(DataType="string",ElementName="Time")]
public String TimeString
{
    get { return this.timeField.ToString("yyyy-MM-dd"); }
    set { this.timeField = DateTime.ParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture); }
}

您可以創建一個字符串屬性,該屬性執行與timeField字段之間的轉換,並將序列化屬性放在其上,而不是應用程序其余部分使用的實際DateTime屬性。

暫無
暫無

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

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