11

I've the following simple class;

Birthdays
{
  public DateTime DateOfBirth {get;set;}
  public string Name {get;set;}
}

I then serialise my object to Xml using;

try
{
   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)
{
    ....
}

The problem I have is that when the Xml is returned the DateOfBirth format is like 2012-11-14T00:00:00 and not 2012-11-14.

How can I override it so that I'm only returning the date part ?

2 Answers 2

31

You should use the XmlElementAttribute.DataType property and specify date.

public class Birthdays
{
  [XmlElement(DataType="date")]
  public DateTime DateOfBirth {get;set;}
  public string Name {get;set;}
}

Using this outputs

<?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> 

Another option is to use a string property just for serialization (backed by a DateTime property you use), as at Force XmlSerializer to serialize DateTime as 'YYYY-MM-DD hh:mm:ss' (this is needed for DataContractSerializer, where the xs:date type is not as well-supported)

Sign up to request clarification or add additional context in comments.

1 Comment

better than my answer I have to admit :)
-2

Try this example out:

        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

5 Comments

(second part:) Would cut off any existing time, but still "dateTime" has the 00:00 Time. Would not change a thing.
thats why i commented use datetime.Date.
But still: The xml would look just like before
if the problem is in wants serialized then not mine not yours but tim S.(for a single property result i mean).my answer is to not rewrite the class(although it is the best solution),and just "get" the desired formatt.
Helped me get there for XElement save of just the date, thanks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.