【问题标题】:TimeSpan to ISO8601 duration format stringTimeSpan 到 ISO8601 持续时间格式字符串
【发布时间】:2011-02-23 18:18:40
【问题描述】:

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

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

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

【问题讨论】:

标签: c# .net


【解决方案1】:

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

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

【讨论】:

  • 在第一行,你也可以说TimeSpan timeSpan = TimeSpan.FromMinutes(value);,这在我看来更清楚。
  • 这对于短时间来说很好,但是一旦你有数月或数年的持续时间,它就会停止工作,因为 TimeSpan 不能代表这些持续时间。它只是将所有内容转换回天数,这是不正确的,因为并非所有月份都有相同的天数。
  • 谢谢。我只是想我会提到 PowerShell 等效项是 [System.Xml.XmlConvert]::ToString($timespan)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多