التسلسلية التاريخ والوقت لآخر دون ميلي ثانية بتوقيت جرينتش

StackOverflow https://stackoverflow.com/questions/101533

سؤال

لقد خلق C# الطبقة الملف باستخدام XSD ملف كمدخل.واحدة من خصائص تبدو مثل هذا:

 private System.DateTime timeField;

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

عندما تسلسل محتويات الملف الآن يبدو مثل هذا:

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

هل من الممكن ، مع XmlAttributes على الممتلكات ، على أن يكون ذلك دون تقديم ميلي ثانية GMT-قيمة مثل هذا ؟

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

هل هذا ممكن, أو هل أنا بحاجة إلى الإختراق معا نوعا من xsl/xpath-استبدال-السحر بعد الصف كان تسلسل ؟

ليس الحل في تغيير الكائن إلى سلسلة لأنها تستخدم مثل التاريخ والوقت في بقية تطبيق يسمح لنا لخلق xml-تمثيل كائن باستخدام XmlSerializer.تسلسل (طريقة).

السبب في أنني بحاجة إلى إزالة معلومات إضافية من الميدان هو أن تلقي النظام لا يتوافق مع معايير w3c للمرة نوع البيانات.

هل كانت مفيدة؟

المحلول

يمكنك إنشاء سلسلة الممتلكات التي لا الترجمة/من timeField الميدانية ووضع التسلسل السمة على أنه بدلا ريال DateTime المنشأة أن بقية يستخدم التطبيق.

نصائح أخرى

وضع [XmlIgnore] في الوقت الممتلكات.

ثم إضافة خاصية جديدة:

[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); }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top