将ISO 8601格式的时间段转换为滴答/毫秒

时间:2010-08-18 11:02:14

标签: c# .net datetime date time

.NET 3.5中是否有内置方法将ISO 8601句点转换为.NET TimeSpan / ticks / milliseconds?

4 个答案:

答案 0 :(得分:6)

XmlConvert.ToTimeSpan似乎永远存在,并且完全符合您的要求。

答案 1 :(得分:2)

即使.Net框架中没有任何内容,我发现Joda.org已经实现了这样的事情,我记得Jon为.Net做了一个名为noda-time的端口

this source code的第一个视图显示他为此目的实施了一些内容。也许你应该在这个项目中做进一步的调查。

答案 2 :(得分:1)

不幸的是,.NET没有直接内置。

在.NET 4之前没有TimeSpan.ParseExact,如果字符串的组件已知,则可以使用它。

答案 3 :(得分:1)

没有内置方式。更复杂的事情ISO 8601 durations实际上与TimeSpan或任何其他测量时间的确切方法完全不兼容。原因是ISO 8601持续时间可以包含年和月。问题在于一年可以有365天或366天,一个月可以有28到31天。 Joda-Time solves this问题是将这些不准确的时期与时间联系起来。

除非你很幸运并且期间碰巧使用P [YYYY] - [MM] - [DD] T [hh]:[mm]:[ss]格式,因为那时你只是:

string period = "P0003-06-04T12:30:05";
TimeSpan span = new TimeSpan(DateTime.Parse(period.Remove(0,1)).Ticks);