我有以下简单的课程;
Birthdays
{
public DateTime DateOfBirth {get;set;}
public string Name {get;set;}
}
然后我使用;
将我的对象序列化为Xmltry
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
using (MemoryStream ms = new MemoryStream())
{
XmlDocument xmlDoc = new XmlDocument();
serializer.Serialize(ms, obj);
ms.Position = 0;
xmlDoc.Load(ms);
return xmlDoc;
}
}
catch (Exception e)
{
....
}
我遇到的问题是,当返回Xml时,DateOfBirth格式类似于2012-11-14T00:00:00而不是2012-11-14。
如何覆盖它以便我只返回日期部分?
答案 0 :(得分:24)
您应该使用XmlElementAttribute.DataType
属性并指定date
。
public class Birthdays
{
[XmlElement(DataType="date")]
public DateTime DateOfBirth {get;set;}
public string Name {get;set;}
}
使用此输出
<?xml version="1.0" encoding="utf-16"?>
<Birthdays xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DateOfBirth>2013-11-14</DateOfBirth>
<Name>John Smith</Name>
</Birthdays>
另一种选择是使用string
属性仅用于序列化(由您使用的DateTime
属性支持),如同Force XmlSerializer to serialize DateTime as 'YYYY-MM-DD hh:mm:ss'一样(这是DataContractSerializer
所需的, xs:date
类型不受支持的地方
答案 1 :(得分:-2)
尝试这个例子:
string date = "2012-11-14T00:00:00";
string result = DateTime.Parse(date).ToShortDateString();
//or....
DateTime dateTime = new DateTime();
dateTime = DateTime.Parse(date);
//now its only use dateTime.Date