net militar milisegundos larga hora formato fecha .net time xml-serialization attributes

.net - militar - Serializar DateTime a tiempo sin milisegundos y gmt



hora militar c# (2)

Creé un archivo de clase C # utilizando un archivo XSD como entrada. Una de mis propiedades se ve así:

private System.DateTime timeField; [System.Xml.Serialization.XmlElementAttribute(DataType="time")] public System.DateTime Time { get { return this.timeField; } set { this.timeField = value; } }

Cuando se serializa, el contenido del archivo ahora se ve así:

<Time>14:04:02.1661975+02:00</Time>

¿Es posible, con XmlAttributes en la propiedad, hacer que se renderice sin los milisegundos y el valor GMT de esta manera?

<Time>14:04:02</Time>

¿Es esto posible, o tengo que hackear juntos algún tipo de xsl / xpath-replace-magic después de que la clase ha sido serializada?

No es una solución cambiar el objeto a Cadena, porque se usa como un DateTime en el resto de la aplicación y nos permite crear una representación xml de un objeto utilizando el método XmlSerializer.Serialize ().

El motivo por el que necesito eliminar la información adicional del campo es que el sistema receptor no cumple con los estándares w3c para el tipo de datos de tiempo.


Puede crear una propiedad de cadena que realice la traducción a / desde su campo timeField y poner el atributo de serialización en lugar de la propiedad real DateTime que usa el resto de la aplicación.


Ponga [XmlIgnore] en la propiedad Time.

Luego agrega una nueva propiedad:

[XmlElement(DataType="string",ElementName="Time")] public String TimeString { get { return this.timeField.ToString("yyyy-MM-dd"); } set { this.timeField = DateTime.ParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture); } }