我得到一个System.FormatException
当我尝试做以下(为例):
TimeSpan ts = XmlConvert.ToTimeSpan("P72H");
我调查了ISO8601标准 ,它似乎是正确的,但我不能让它解析小时没有抛出任何异常,无论我做什么。
谢谢!
编辑:
异常详细信息:
System.FormatException was unhandled by user code
HResult=-2146233033
Message=The string 'P72H' is not a valid TimeSpan value.
Source=System.Xml
你需要时间分隔符添加到您的字符串。 试试这个:
TimeSpan ts = XmlConvert.ToTimeSpan("PT72H");
见周期指标- http://www.w3.org/TR/xmlschema-2/#duration
3.2.6.1词汇表示
对于持续时间的词汇表示是[ISO 8601]扩展格式PnYn MnDTnH NMNS,其中ny表示的年数,NM月数,ND的天数,“T”是日期/时间分隔符,NH数小时,NM分钟和NS的秒数的数量。 秒数可以包括十进制数字到任意精度。
你一定错过了标准的东西。 下列:
System.Xml.XmlConvert.ToString(TimeSpan.FromHours(12))
给我的字符串PT12H
。 因此它似乎需要用前缀的时间部分T
。 而下面的正确分析:
System.Xml.XmlConvert.ToTimeSpan("PT25H")
(要在TimeSpan
该stringifies到1.01:00:00
)。
请使用以下格式System.Xml.XmlConvert.ToTimeSpan("PnYnMnDTnHnMnS")
P - 该标志必须放在日期格式之前。
纽约 - 年数,比如:2Y
纳米 - 个月前号:4M
ND - 天前数:6D
笔 - 必须在时间格式前放置的标志
nH的 - 小时前数:8H
纳米 - 纪要前数:12M
NS - 秒前数:14S
System.Xml.XmlConvert.ToTimeSpan("P2Y4M6DT8H14M18S")
这里,月份和分钟的混乱部分具有相同的字母来表示,但标志的使用,使它们分开很容易理解。