对自定义字符串的时间求和
本文关键字:时间 求和 字符串 自定义 | 更新日期: 2023-09-27 18:16:19
我在网格中有一个时间字符串,如"0小时1分钟"。
现在我要计算时间的总和。
我可以使用下面的代码提取这个和字符串,
string timeValue = Regex.Replace(e.FieldValue.ToString(), "[^0-9]+", string.Empty);
DateTime d = DateTime.ParseExact(timeValue, "hhmm", CultureInfo.InvariantCulture);
但我无法将其转换为时间并将小时和分钟相加
请帮。
如果您的字符串始终是该格式,您可以尝试使用模式和DateTime。TryParseExact
string timestring = "0 hours 1 minutes";
string pattern = "H' hours 'm' minutes'";
var dt = new DateTime();
if (DateTime.TryParseExact(timestring, pattern, CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt))
{
//success
}
else
{
//wrong input
}
您的代码不能工作,因为它期望小时和分钟各有两位数字。您可以使用正则表达式:
var timeString = "0 hours 1 minutes";
var regex = new Regex(@"^(?<hours>[0-9]+) hours (?<minutes>[0-9]+) minutes$");
var match = regex.Match(timeString);
if (!match.Success)
// ... handle input error.
var hours = Int32.Parse(match.Groups["hours"].Value);
var minutes = Int32.Parse(match.Groups["minutes"].Value);
var timeSpan = TimeSpan.FromMinutes(60*hours + minutes);
结果是表示"H小时M分钟"的适当类型TimeSpan
,而不是表示特定时间点的DateTime
。