2016-02-28 5 views
-1

Я новичок в программировании на C#, и мне нужна ваша помощь по этому one.I есть строка со значением «12:45:00», и я хотел бы преобразовать ее в десятичную с двумя десятичными знаками.Как преобразовать время в формате строки в десятичный в C#?

+3

«Десятичный с двумя местами», что такое единица времени * *? Можете ли вы привести пример? – Ian

+0

единица времени в часах: минуты: секунды –

+1

Любой * образец *, как вы хотите превратить его в * десятичный с двумя местами *. Например, учитывая 12:45:00, какой будет выход -> ????? – Ian

ответ

1

Хотя вы можете использовать DateTime-структуру для вашего дела, но , так как ваш string не содержит date информации, я думаю, что самый простой способ будет использовать string.Split вместо этого.

string[] strs = "12:45:00".Split(':'); //will give you 12, 45, and 00 
double val = Convert.ToDouble(strs[0]) + Convert.ToDouble(strs[1])/60 + Convert.ToDouble(strs[2])/3600; 

Затем напечатать ее в двух десятичных значений, просто сделать:

val.ToString("F2"); //you will get 12.75 

Или, чтобы получить 12.45, то просто сделать:

double val = Convert.ToDouble(strs[0]) + Convert.ToDouble(strs[1])/100; //note 100 here - second doesn't matter here 
+0

Похоже, что OP хочет '12: 45' не' 12: 75' на основе комментария. http://stackoverflow.com/questions/35684633/how-to-convert-time-in-string-format-into-decimal-in-c#comment59046787_35684633 –

+0

@ SonerGönül, что довольно странно для единицы времени * часов *: S don Вы думаете? но хорошо, я обновил свой ответ, чтобы включить это в любом случае ... – Ian

+0

@ SonerGönül Это не имеет смысла при расчете валового дохода с учетом продолжительности в часах и почасовой ставке (что я думаю, что OP пытается это сделать). Я не могу придумать ни одного случая, когда использование двойного значения 12,45 для представления продолжительности 12:45 имеет смысл в контексте расчета валового дохода. –

1

Если вы задумали преобразовать продолжительность в часах, минутах и ​​(необязательно) секунд в часах, вы можете сделать это так:

double answer = TimeSpan.Parse("12:45:00", CultureInfo.InvariantCulture).TotalHours; 
Console.WriteLine(answer); // Prints 12.75 

Это значение, которое вы можете использовать вместе с почасовой ставкой для расчета валового дохода.

Примечание: Было бы неверно конвертировать 12:45 (чч: мм) в 12.45, поскольку 12:45 составляет 12,75 часа, а не 12,45 часа.

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