我有一些xxh:yym格式的字符串,其中xx是小时,yy是分钟,如“05h:30m”。 将此类型的字符串转换为TimeSpan的优雅方法是什么?

===============>>#1 票数:27 已采纳

这似乎有用,虽然它有点hackish:

TimeSpan span;


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

===============>>#2 票数:6

DateTime.ParseExactDateTime.TryParseExact允许您指定输入的确切格式。 获得DateTime ,您可以获取DateTime.TimeOfDay ,这是一个TimeSpan

在没有TimeSpan.TryParseExact的情况下,我认为一个“优雅”的解决方案是不合适的。

@buyutec如您所料,如果时间跨度超过24小时,此方法将无效。

===============>>#3 票数:2

这是一种可能性:

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

如果您想在代码中使其更优雅,请使用扩展方法:

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

那你可以做

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

===============>>#4 票数:2

从另一个线程:

如何将xs:duration转换为timespan

===============>>#5 票数:1

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

  ask by Serhat Ozgel translate from so

未解决问题?本站智能推荐: