TimeSpan到ISO8601持续时间格式字符串

gar*_*kal 30 .net c#

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

"1小时30分钟"将导致"PT1H30M",例如:

int duration = 90;
string isoString = duration.ToIsoDuration();
Run Code Online (Sandbox Code Playgroud)

gar*_*kal 48

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

   TimeSpan timeSpan = new TimeSpan(0, value, 0);
   return XmlConvert.ToString(timeSpan);
Run Code Online (Sandbox Code Playgroud)

  • 在第一行中,您还可以说"TimeSpan timeSpan = TimeSpan.FromMinutes(value);"在我看来,这个更清楚. (7认同)
  • 这对于持续时间很短很好,但是只要你有数月或数年的持续时间,它就会停止工作,因为TimeSpan不能代表这些持续时间.它只是将所有内容转换回天数,这是不正确的,因为并非所有月份都有相同的天数. (3认同)
  • 谢谢你。我只是想我会提到 PowerShell 等价物是`[System.Xml.XmlConvert]::ToString($timespan)`。 (2认同)