2010-05-25 86 views
23

任何人都可以建议如何将时间跨度或int转换为ISO8601持续时间字符串,如http://en.wikipedia.org/wiki/ISO_8601#Durations中所述?TimeSpan以ISO8601持续时间格式字符串

“1小时30分钟” 会导致 “PT1H30M”,例如:

int duration = 90; 
string isoString = duration.ToIsoDuration(); 
+0

的可能的复制[如何将ISO8601 TimeSpan转换为C#TimeSpan?](http://stackoverflow.com/questions/12466188/how-do-i-convert-an-iso8601-timespan-to-ac-sharp-timespan) – Pekka 2016-06-20 07:48:41

+0

不是重复的 - 解析和表示为字符串是独立的操作。 – Brent 2016-09-27 04:25:26

回答

40

找到了解决办法我自己,所以我想我会分享:

TimeSpan timeSpan = new TimeSpan(0, value, 0); 
    return XmlConvert.ToString(timeSpan); 
+5

在第一行中,您还可以说'TimeSpan timeSpan = TimeSpan.FromMinutes(value);'这在我看来更加清晰。 – 2012-09-24 19:51:06

+3

这对于短时间内很好,但只要您有几个月或几年的持续时间,就会停止工作,因为TimeSpan无法表示这些持续时间。它只是将一切都转换回日期,这是不正确的,因为不是所有的月份都有相同的天数。 – 2015-03-25 09:41:09

+0

谢谢你。我只是想我会提到PowerShell的等价物是'[System.Xml.XmlConvert] :: ToString($ timespan)'。 – deadlydog 2018-02-08 05:18:44

相关问题