XmlSerializer : Format DateTime String

XmlSerializer : Format DateTime String

前陣子碰到一個需求:因為DateTime型別的物件在進行XmlSerialize(XML序列化)的時候,會轉換成ISO 8601的字串格式,變成:2010-03-02T02:49:35.235,結果對方的程式沒辦法直接轉換,希望我可以改成一般常用的:2010/03/02 02:49。

通常如果要自訂序列化的方式,都會實作IXmlSerializable介面,但今天只有一個日期欄位想要轉換輸出格式的時候,有沒有更好的方式呢?

利用XML SerializableAttribute,我們可以幫他做個小小變化:

//原先屬性 
[XmlIgnore] 
public DateTime CreateTime { get; set; } 
 
//替代屬性
[XmlAttribute("CreateTime")] 
public string XCreateTime 
{ 
    get { return this.CreateTime.ToString("yyyy/MM/dd hh:mm"); } 
    set { this.CreateTime = new DateTime.Parse(value); } 
}

把原先的屬性設定隱藏,再另外新增一個字串屬性來存取,就可以簡單的解決這個問題了!

 

相關連結:

C# serializing Class to XML where one of class properties is DateTime. How to make this property in ISO format?

 ps:我一開始不知道為什麼找半天都只看到實作介面的T_T....

DotBlogs 的標籤: