DateTime到持续时间转换

时间:2012-11-05 12:52:50

标签: c# xsd

c#是否支持将两个DateTime转换为xs:duration数据类型? (我假设我需要两个DateTime值?)

参考文献:http://www.w3.org/TR/xmlschema-2/#durationhttp://www.w3schools.com/schema/schema_dtypes_date.asp(一半)

2 个答案:

答案 0 :(得分:4)

XMLConvert课程对此有所支持,如下所述:http://kennethxu.blogspot.de/2008/09/xmlserializer-doesn-serialize-timespan.html

我最终使用了这段代码,并在xml中显示了正确的值

    [XmlElementAttribute("ValidThrough", DataType = "duration")]
    [DataMember(Name = "ValidThrough")]
    [DefaultValue("P10D")]
    public string ValidThrough
    {
        get
        {
            return XmlConvert.ToString(_validThroughField);
        }
        set
        {
            _validThroughField= XmlConvert.ToTimeSpan(value);
        }
    }

    [XmlIgnore]
    public TimeSpan _validThroughField { get; set; }

答案 1 :(得分:3)

TimeSpan正是您要找的。

  

TimeSpan对象表示时间间隔(持续时间或   经过时间),以正数或负数来衡量   天,小时,分钟,秒和分数秒。 TimeSpan   结构也可用于表示一天中的时间,但仅限于   时间与特定日期无关。否则,DateTime或   应该使用DateTimeOffset结构。

示例:

DateTime dt1 = new DateTime(2012, 10, 2, 10, 20, 00);
DateTime dt2 = DateTime.Now;

TimeSpan ts = dt1 - dt2;