将此字符串转换为小时和分钟c#

时间:2017-07-05 07:37:12

标签: c# regex

输入值在字符串值中仅与此类似,而不是其他内容:P0DT3H40M0S 这表示旅行时间,需要转换为小时和分钟。 D表示日,T表示时间(右侧表示时间,上方样本为:3小时40分钟0秒.H小时,M分钟,S秒) 如果D中有值,例如。 P1DT3H40M0S - 这已经表示1天3小时40分0秒,因此输出应为27小时40分钟。如何使用正则表达式获取天,小时和分钟的值?或者我可以使用子串吗?我的问题是如果有2位数的天和小时,子串将无法工作。我需要得到D,H和M的数字。

1 个答案:

答案 0 :(得分:-1)

您可以使用TimeSpan.ParseExact将此字符串解析为TimeSpan

var pattern=@"\Pd\D\Th\Hm\Ms\S";
var ts = TimeSpan.ParseExact("P01DT3H40M0S",pattern,CultureInfo.InvariantCulture);

您可以在计算中使用TimeSpan对象。它支持加法,减法和比较。

您可以使用TotalHours以小时为单位提取总持续时间。在这种情况下,这将返回27.6666666。您可以通过转换为int来获取整个小时,(int)ts.TotalHours将返回27

Copying from one of Jon Skeet's answers您可以使用截断的TotalHours和Minutes,Seconds组件将字符串格式化为小时/分钟:

String.Format("{0}:{1}:{2}",(int)ts.TotalHours,ts.Minutes,ts.Seconds)

这将返回27:40:0