2015-06-18 1 views
9

Мне нужно преобразовать секунды в формате 3d, 02:05:45. С помощью следующей функции я мог бы преобразовать ее в 3.02:05:45. Я не уверен, как преобразовать его в формат, который я хотел. Пожалуйста помоги.Преобразование секунд в дни, hh: mm: ss C#

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") я получаю сообщение об ошибке,

входная строка не в правильном формате.

+0

и может добавить ур желание персонажа в методе ToString с "\", прежде чем ур характер ==> t.ToString (@ "d \ d \ , hh \: mm \: ss ") –

+0

можете ли вы привести пример? Вы имеете в виду это возвращение t.ToString (@ "%., Hh: mm: ss")? – Ramya

+0

Это сработало @Leon_SFS :) – Ramya

ответ

8

Если я правильно понимаю, вы можете Espace 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

любой другой неэкранированных символов в строке формата, в том числе белый пробел, интерпретируется как спецификатор специального формата. В большинстве случаев наличие любого другого неэкранированного символа приводит к FormatException.

Есть два способа включить буквальный символ в строке формата:

  • заключите его в одинарные кавычки (буквальный строка разделителей).

  • Предварите его с помощью обратного слэша ("\"), который интерпретируется как escape-символ. Это означает, что в C# строка форматирования должна либо быть @ -quoted, либо буквенному символу предшествует дополнительная обратная косая черта .

1

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

Любые [другие] неэкранированные символы в строке формата, в том числе белого символ пробела в, интерпретируются как пользовательский формат. В большинстве случаев наличие любого другого неэкранированного символа приводит к FormatException. Есть два способа включения буквального символа в строке формата:

  • заключите его в одинарных кавычках (буквальный строка разделителей).
  • Предваряйте его обратным слэшем ("\"), который является интерпретируется как символ эвакуации. Это означает, что в C# строка должна быть либо @ -котируемой, либо буквенным символом должно быть , которому предшествует дополнительная обратная косая черта.
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"); 

 Смежные вопросы

  • Нет связанных вопросов^_^