当前位置:  开发笔记 > Android > 正文

如何在VB.Net中将ISO 8601持续时间转换为TimeSpan?

如何解决《如何在VB.Net中将ISO8601持续时间转换为TimeSpan?》经验,为你挑选了2个好方法。

是否有标准库方法将具有标准ISO 8601持续时间(也在XSD中用于其duration类型)格式的持续时间的字符串转换为.NET TimeSpan对象?

例如,表示持续时间为1小时的P0DT1H0M0S将转换为New TimeSpan(0,1,0,0,0).

反向转换器确实存在,其工作方式如下:Xml.XmlConvert.ToString(New TimeSpan(0,1,0,0,0))上面的表达式将返回P0DT1H0M0S.



1> user7658..:

这将从xs:duration转换为TimeSpan:

System.Xml.XmlConvert.ToTimeSpan("P0DT1H0M0S")

请参阅http://msdn.microsoft.com/en-us/library/system.xml.xmlconvert.totimespan.aspx



2> Paul William..:

一个小小的警告 - XmlConvert.ToTimeSpan()在使用数月和数年时有点滑稽.TimeSpan类没有月份或年份成员,可能是因为它们的长度不同.但是,ToTimeSpan()将很乐意接受包含月份或年份值的持续时间字符串并猜测持续时间,而不是抛出异常.注意:

PS C:\Users\troll> [Reflection.Assembly]::LoadWithPartialName("System.Xml")

GAC    Version        Location
---    -------        --------
True   v2.0.50727     C:\Windows\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll


PS C:\Users\troll> [System.Xml.XmlConvert]::ToTimeSpan("P1M")


Days              : 30
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 0
Ticks             : 25920000000000
TotalDays         : 30
TotalHours        : 720
TotalMinutes      : 43200
TotalSeconds      : 2592000
TotalMilliseconds : 2592000000



PS C:\Users\troll> [System.Xml.XmlConvert]::ToTimeSpan("P1Y")


Days              : 365
Hours             : 0
Minutes           : 0
Seconds           : 0
Milliseconds      : 0
Ticks             : 315360000000000
TotalDays         : 365
TotalHours        : 8760
TotalMinutes      : 525600
TotalSeconds      : 31536000
TotalMilliseconds : 31536000000



PS C:\Users\troll>


功能:几个月很奇怪。`P11M` => 330天,但是`P12M` => 365天
推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有