将秒数转换为天数,hh:mm:ss C#

时间:2015-06-18 05:45:20

标签: c# timespan

我需要以3d, 02:05:45格式转换秒数。使用以下功能,我可以将其转换为3.02:05:45。我不确定如何将其转换为我想要的格式。请帮忙。

private string ConvertSecondsToDate(string seconds)
{
    TimeSpan t = TimeSpan.FromSeconds(Convert.ToDouble(seconds));

    if (t.Days > 0)
        return t.ToString(@"d\.hh\:mm\:ss");
    return t.ToString(@"hh\:mm\:ss");

}

如果我尝试执行此类操作,请返回t.ToString(@"%d , hh\:mm\:ss")我收到错误,

  

输入字符串的格式不正确。

3 个答案:

答案 0 :(得分:8)

如果我理解正确,您可以d字符和\之类的其他空格;

if (t.Days > 0)
    return t.ToString(@"d\d\,\ hh\:mm\:ss");

if (t.Days > 0)
    return t.ToString(@"d'd, 'hh\:mm\:ss");

结果将格式化为3d, 02:05:45

来自Other Characters

中的Custom TimeSpan Format Strings部分
  

格式字符串中的任何其他未转义字符,包括a   空格字符,被解释为自定义格式说明符。在   在大多数情况下,任何其他未转义字符的存在都会导致a   出现FormatException。

     

两种方式在格式字符串中包含文字字符:

     
      
  • 将其用单引号括起来(文字字符串分隔符)。

  •   
  • 在前面加上反斜杠(“\”),它被解释为转义字符。这意味着,在C#中,格式字符串必须   要么是@ -quoted,要么文字字符必须以a开头   额外的反斜杠。

  •   

答案 1 :(得分:1)

https://msdn.microsoft.com/en-us/library/ee372287.aspx

  

格式字符串中的任何[其他]未转义字符,包括   空格字符,被解释为自定义格式说明符。在   在大多数情况下,任何其他未转义字符的存在都会导致a   出现FormatException。有两种方法可以包含文字字符   格式字符串:

     
      
  • 用单引号括起来(字面值   字符串分隔符)。
  •   
  • 用反斜杠(" \")作为前缀   被解释为转义字符。这意味着,在C#中,格式   string必须是@ -quoted,或者必须是文字字符   之前是一个额外的反斜杠。
  •   
private string ConvertSecondsToDate(string seconds)
{
     TimeSpan t = TimeSpan.FromSeconds(Convert.ToDouble(seconds));

     if (t.Days > 0)
         return t.ToString(@"d\d\,\ hh\:mm\:ss");
     return t.ToString(@"hh\:mm\:ss");
}

或者

 if (t.Days > 0)
     return t.ToString(@"d'd, 'hh':'mm':'ss");

答案 2 :(得分:0)

return t.ToString(@"d\d\, hh\:mm\:ss")