У меня есть код, который берет, например, 27:30 (27 часов 30 минут) и преобразует его в десятичный, как 27.5. У меня есть другая функция, которая делает обратное.Код для конвертирования рабочего времени обертывается до 24 часов?
public class Time
{
public static string Hours(decimal d)
{
return TimeSpan.FromHours((double)(d + 0.005M)).ToString("h\\:mm");
}
public static decimal Hours(string s)
{
decimal r;
if (decimal.TryParse(s, out r))
return r;
return (decimal)TimeSpan.Parse(s).TotalHours + 0.005M;
}
}
Проблема в том, что преобразование из десятичной строки в строку, кажется, завершается до 24 часов. Если я дам 30.0, это дает мне 6:00, что неправильно. Это должно быть 30:00
Что мне делать, чтобы избежать обертывания?
Благодаря
Это не упаковка в течение 24 часов, вы также должны посмотреть на свойство «Дни». В течение 30 часов Дни = 1 и Часы = 6. Вот почему вы видите «6:00». – David
@ConradFrix, «h» в ToString TimeSpan не показывает «TotalHours». Он тянет только из свойства «Часов». – David
@David моя ошибка Я искал «Часы (строка s)» вместо «Часы (десятичные)» –