Cod*_*man 37 c# xml datetime parsing xml-parsing
System.FormatException
当我尝试执行以下操作时,我会得到一个(例如):
TimeSpan ts = XmlConvert.ToTimeSpan("P72H");
Run Code Online (Sandbox Code Playgroud)
我已经调查了ISO8601标准,它似乎是正确的,但无论我做什么,我都无法解析它而不会抛出异常.
谢谢!
编辑:
例外细节:
System.FormatException was unhandled by user code
HResult=-2146233033
Message=The string 'P72H' is not a valid TimeSpan value.
Source=System.Xml
Run Code Online (Sandbox Code Playgroud)
pst*_*jds 64
您需要将时间分隔符添加到字符串中.试试这个:
TimeSpan ts = XmlConvert.ToTimeSpan("PT72H");
Run Code Online (Sandbox Code Playgroud)
请参阅持续时间规范 - http://www.w3.org/TR/xmlschema-2/#duration
3.2.6.1词汇表示
持续时间的词汇表示是[ISO 8601]扩展格式PnYn MnDTnH nMnS,其中nY表示年数,nM表示月数,nD表示天数,'T'表示日期/时间分隔符,nH小时数,nM分钟数和nS秒数.秒数可以包括任意精度的十进制数字.
mil*_*ose 10
你一定错过了标准中的东西.下列:
System.Xml.XmlConvert.ToString(TimeSpan.FromHours(12))
Run Code Online (Sandbox Code Playgroud)
给了我一个字符串PT12H
.所以似乎时间部分需要以a为前缀T
.以下解析正确:
System.Xml.XmlConvert.ToTimeSpan("PT25H")
Run Code Online (Sandbox Code Playgroud)
(以TimeSpan
字母串联到1.01:00:00
.)
请使用以下格式System.Xml.XmlConvert.ToTimeSpan("PnYnMnDTnHnMnS")
。
P - 指示符必须放在日期格式之前。
nY - 年数,例如:2Y
nM - 月数,例如:4M
nD - 天数,例如:6D
T - 必须放在时间格式之前的指示符
nH - 小时数,例如:8H
nM - 分钟数例如:12M
nS - 秒数 例如:14S
System.Xml.XmlConvert.ToTimeSpan("P2Y4M6DT8H12M14S")
Run Code Online (Sandbox Code Playgroud)
这里,与“月”和“分钟”混淆的部分具有相同的字母来表示,但指示符的用法使它们分开以便于理解。
归档时间: |
|
查看次数: |
19940 次 |
最近记录: |