首页 / 知识

关于c#:将字符串解析为TimeSpan

2023-04-13 03:50:00

关于c#:将字符串解析为TimeSpan

Parse string to TimeSpan

我有一些xxh:yym格式的字符串,其中xx是小时,而yy是分钟,例如" 05h:30m"。 有什么绝妙的方法可以将这种类型的字符串转换为TimeSpan?


这似乎可行,尽管有点黑:

1
2
3
4
5
TimeSpan span;


if (TimeSpan.TryParse("05h:30m".Replace("m","").Replace("h",""), out span))
            MessageBox.Show(span.ToString());

DateTime.ParseExactDateTime.TryParseExact使您可以指定输入的确切格式。获得DateTime后,您可以抓住DateTime.TimeOfDay,它是TimeSpan

在没有TimeSpan.TryParseExact的情况下,我认为没有"优雅"的解决方案。

@buyutec正如您所怀疑的,如果时间跨度超过24小时,则此方法将不起作用。


从另一个线程:

如何将xs:duration转换为时间跨度


这是一种可能性:

1
TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1));

而且,如果您想使其代码更美观,请使用扩展方法:

1
2
3
4
5
public static TimeSpan ToTimeSpan(this string s)
{
  TimeSpan t = TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1));
  return t;
}

那你可以做

1
"05h:30m".ToTimeSpan();

TimeSpan.Parse和TimeSpan.TryParse不是选项吗?如果您使用的不是"批准"格式,则需要手动进行解析。我可能会在正则表达式中捕获两个整数值,然后尝试将它们解析为整数,然后从那里可以使用其构造函数创建一个新的TimeSpan。


字符串类型方法有什么

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢