ISO 8601 时间格式之Duration转换成TimeSpan

资料url: http://www.w3.org/TR/xmlschema-2/#token

在XML 模式介绍中对datetype有个详细的介绍,由于最近工作涉及到其中的一种时间格式Duration,今天就着重记录一下这一种时间格式。

原始数据类型

 string,boolean,decimal, float, double,duration,dateTime,time,date,gYearMonth,gYear,gMonthDay,gDay,gMonth,hexBinary,base64Binary,anyURI,QName,NOTATION

Duration

  • 定义:持续的时间。
  • 词汇表示规则:6维空间表示,分别指定格利高里年、月、日、时、分和秒。使用的是ISO 8610的扩展格式:PnYn MnDTnHnMnS。(n为整数或者是小数,P为不可省略的标识符,nY表示n年,nM表示n月,nD表示n天,T表示日期和时间的分隔符,nH表示n小时,nM表示n分钟,nS表示n秒(秒可以是任意精度的小数))
  • 注意事项:

            如果年、月、日、时、分或者秒的等于0的,则相应的标识符可以省略掉,但是,至少存在一个数字和它的标识符;

            S的值可能是小数;

            只有当Time部分所有的元素都没有的时候,T标识符才必须要省略

            P标识符必须存在           

  • 例子:

     P1Y2M3DT10H30M:持续时间为1年,两月,3天,10小时,30分钟。

     P134Y:持续134年;

     P1347M(或者P0Y1347M,P0Y1347M0D):持续1347月;

     P1Y2MT2H:持续1年2月2小时;   

     -P120D: 减去120天;

     P-1347M:错误;

     P1Y2MT:错误。

Duration顺序关系

<> means that the order relation is indeterminate.

  Relation
P1Y > P364D <> P365D   <> P366D < P367D
P1M > P27D <> P28D <> P29D <> P30D <> P31D < P32D
P5M > P149D <> P150D <> P151D <> P152D <> P153D < P154D

C#转换成TimeSpan

var timespan= System.Xml.XmlConvert.ToTimeSpan(P5M10D);




你可能感兴趣的:(C#)