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); }
}
把原先的屬性設定隱藏,再另外新增一個字串屬性來存取,就可以簡單的解決這個問題了!
相關連結:
ps:我一開始不知道為什麼找半天都只看到實作介面的T_T....
DotBlogs 的標籤:C#