我有一些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

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

1回复

TimeSpan不会解析某些字符串

我不确定这是怎么回事,但可以接受一些时间跨度,但不能接受其他时间跨度。 有人可以向我展示一种以99:59:59格式检查有效时间跨度的方法。
1回复

使用TimeSpan.ParseExact()方法将字符串解析为TimeSpan

我想根据我的自定义文化将字符串解析为时间。 我的格式为ShortTimePattern为HH:ss 示例代码: 但是现在的问题是我得到了 我想在哪里 按照文化中指定的格式
4回复

为什么TimeSpan字符串格式化会解析为异常?

我在c#MVC2项目中有以下代码行: 此行导致以下异常: 谁能告诉我为什么? 我正在使用C#,asp.net,mvc2和.net framework 4
1回复

将TimeSpan解析或转换为字符串

我需要使用用户提供的格式将TimeSpan解析为字符串 我尝试了许多选项,包括各种RegEx.Replace和Parse选项。 在下面,我向TimeSpan添加了Extension方法。
3回复

从包括格式的字符串解析TimeSpan

我敢肯定这一定很简单,但我无法弄清楚如何在Google中正确地说出来...... 我有一个包含字段的配置: 现在,我想要做的事,如 : 返回一天的时间跨度。 在C#中 编辑:我正在寻找一种方法,允许解析“1d”以及“1s”或“1y”等。这可能吗? 含义:
1回复

将AM / PM时间字符串解析为TimeSpan

我正在使用以下内容将时间字符串解析为TimeSpan: 当我尝试解析上午9:00,下午5:00之类的值时,此方法返回false。 怎么了
5回复

将时间值的字符串表示形式解析为TimeSpan

我有一个XML文件,其中包含多个属性,其中包含时间值,我需要将这些值加起来。 但是问题在于TimeSpan.Parse("0.345")无法解析该值并导致Exception。 使用TimeSpan.Parse("0.345",System.Globalization.CultureIn
5回复

如何将小时数大于24的字符串解析为TimeSpan?

如何在C#中将30:15之类的字符串解析为TimeSpan? 30:15表示30小时15分钟。 这似乎不太优雅。
5回复

将字符串转换为TimeSpan

我需要将其转换为时间跨度: 8 8.3 8.15 当我这样做时: 它最终会在几天而不是时间里加上“ 10”(上午10点),尽管这是一种愚蠢的格式。
3回复

TimeSpan字符串格式

我有一个Timespan,我需要以特定的格式输出,如下所示: - 我像这样格式化TimeSpan: - 结果将如下所示: - “00:16:45.6184635” 如何将这些秒数舍入到0位小数? 谢谢