.net – Serializing DateTime to time without milliseconds and gmt


I have created a C# class file by using a XSD-file as an input. One of my properties look like this:

 private System.DateTime timeField;

 public System.DateTime Time {
     get {
         return this.timeField;
     set {
         this.timeField = value;

When serialized, the contents of the file now looks like this:


Is it possible, with XmlAttributes on the property, to have it render without the milliseconds and the GMT-value like this?


Is this possible, or do i need to hack together some sort of xsl/xpath-replace-magic after the class has been serialized?

It is not a solution to changing the object to String, because it is used like a DateTime in the rest of the application and allows us to create an xml-representation from an object by using the XmlSerializer.Serialize() method.

The reason I need to remove the extra info from the field is that the receiving system does not conform to the w3c-standards for the time datatype.

Best Solution

Put [XmlIgnore] on the Time property.

Then add a new property:

public String TimeString
    get { return this.timeField.ToString("yyyy-MM-dd"); }
    set { this.timeField = DateTime.ParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture); }