C#将给定格式转换为秒

时间:2015-11-10 11:58:36

标签: c#

我们如何在C#

上将给定小时和Min格式转换为秒

示例:实际字符串为" 12小时14分钟" 需要转换为= 734 (这是必需的逻辑)

由于 734 = 12小时* 60分钟= 720分钟+14分钟 我希望" substring"将为此提供帮助或请提供解决方案

3 个答案:

答案 0 :(得分:2)

不明确的问题的过冲解决方案:

String source = "12 hours 14 mins";

String[] chunks = source.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
int seconds = 0;

for (int i = 0; i < chunks.Length - 1; ++i) {
  int v;

  if (int.TryParse(chunks[i], out v)) {
    String mark = chunks[i + 1];

    if (mark.StartsWith("h", StringComparison.OrdinalIgnoreCase))
      seconds += 3600 * v;
    else if (mark.StartsWith("m", StringComparison.OrdinalIgnoreCase))
      seconds += 60 * v;
    else if (mark.StartsWith("s", StringComparison.OrdinalIgnoreCase))
      seconds += v;

    i += 1;
  }
}

// Test 44040 = 12 * 60 * 60 + 14 * 60 (you've asked for seconds, right?)
Console.Write(seconds);

支持的格式(示例):

  12 hours 50 mins 5 secs
  12 hours 5 secs
  12 hours
  15 min
  15 secs
  20 h 30 m 15 s

答案 1 :(得分:1)

如果输入字符串的格式始终为00 hours 00 mins,那么您只需使用Split来提取值:

String str = "1234 hours 14 mins";

String split = str.Split(" hours");

int hours = int.Parse(split[0]);
int minutes = int.Parse(split.Split(" mins")[0]);

Console.WriteLine(hours * 60 + minutes);

答案 2 :(得分:0)

如果您的字符串是常量格式:

几小时的正则表达式:\d+(?=\shour)

分钟的正则表达式\d+(?=\smin)

为什么正则表达式而不是子字符串?你玩1 hour10 hours所以即使是“s”也可以改变子串的索引

获取有关如何实现正则表达式here

的信息