当前位置:  开发笔记 > 编程语言 > 正文

将DateTime序列化为时间而不是毫秒和gmt

如何解决《将DateTime序列化为时间而不是毫秒和gmt》经验,为你挑选了2个好方法。

我使用XSD文件作为输入创建了一个C#类文件.我的一个属性看起来像这样:

 private System.DateTime timeField;

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

序列化时,文件的内容现在如下所示:


在属性上使用XmlAttributes,是否有可能在没有毫秒和GMT值的情况下渲染它?


这是可能的,还是我需要在序列化类之后将某种xsl/xpath-replace-magic混合在一起?

它不是将对象更改为String的解决方案,因为它在应用程序的其余部分中像DateTime一样使用,并允许我们使用XmlSerializer.Serialize()方法从对象创建xml表示.

我需要从字段中删除额外信息的原因是接收系统不符合time数据类型的w3c标准.



1> Matt Howells..:

将[XmlIgnore]放在Time属性上.

然后添加一个新属性:

[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); }
}


`"yyyy-MM-dd"`时间字段的正确格式字符串?虽然这个解决方案对我来说不起作用,但确实让我找到了一个.我不得不使用`"HH:mm:ss"`,我从我的`dateField`中获取了这样的`get {return this.dateField.ToString("HH:mm:ss"); }`

2> Jeffrey L Wh..:

您可以创建一个字符串属性,该属性执行与timeField字段之间的转换,并将序列化属性放在其上,而不是应用程序其余部分使用的实际DateTime属性.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有