资料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);