2016-09-15 3 views
1

У меня есть int, который я хочу преобразовать в строку в определенном формате.Преобразование int в строку в определенном формате

Например, -1 до -01: 00

Это легко, если у меня есть положительное число (т.е. от 1 до 01:00). Я могу использовать следующий код:

var time = 6; 
var convertTime = "0" + time + ":00"; 

Выход:

06:00 

Я не знаю, как достичь же с отрицательным числом.

var time = -6; 
var convertTime = /* what to do here */ + time + ":00"; 

Желаемая Выход:

-06:00 
+0

'вар convertTime = "0" + время + ": 00"' даст неверное значение, если 'time' больше 9 –

+0

Он никогда не будет. Макс - 6 на основе функциональности. Хороший момент. – CSharper

ответ

8

Просто используйте string.Format для этого

int time = -6; 
var convertTime = string.Format("{0:00}:00", time); 

Или если у вас есть C# 6 вы можете сделать интерполированную строку.

var convertTime = $"{time:00}:00"; 
+1

Просмотрите https://msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx параметры для строки формата. – Jacob

+0

@juharr Perfect. Это то, что я искал. – CSharper

0
var time = (myInt*100).ToString("00:00"); 

Или, если с помощью C# 6 (VS2015):

var input = -6; 
var time = $"{input:00}:00"; 
0
var time = -6; 
var convertTime = (time < 0 ? "-" : String.Empty) + Math.Abs(time).ToString("D2") + ":00"; 
+0

Если вы используете форматир 'D2', вам не нужно делать абсолютную и всю проверку знака, просто' var convertTime = time.ToString («D2») + «: 00»; – juharr

0

Ниже приведен пример использования TimeSpan.

public void TestTimeSpan() 
{ 
    var ts = new TimeSpan(-1, 0, 0); 
    var s = string.Format("{0}{1:hh\\:mm}", ts < TimeSpan.Zero? "-": string.Empty, ts); 
    Assert.AreEqual("-1:00", s); 
} 
Смежные вопросы