Преобразование минут в часы

Я пытаюсь решить эту проблему :

у меня есть большое количество минут и я хочу, чтобы преобразовать их в часы, когда я пытаюсь с TimeSpan, Он всегда показывает дни и часы.

мой пример кода :

double minutes = 2000 ;
TimeSpan hours = TimeSpan.FromMinutes(minutes);
label1.Text = hours.ToString(@"hh:mm");

выходной результат 09:20 но я хотел этого результата 33:20

Как сконвертировать минуты, чтобы получить точное количество часов ?

5 ответов


этот код производит 33:20 результат вы спрашиваете:

double minutes = 2000;
TimeSpan ts = TimeSpan.FromMinutes(minutes);
var res = $"{(int)ts.TotalHours}:{ts.Minutes}";

вам нужно использовать TotalHours на


еще одна возможность-использовать 0 и 00 форматирование строк для объединения форматирование и усек:

double minutes = 2000;

// 2000 -> 33:20
// 1808 -> 30:08
//    8 -> 0:08
label1.Text = $"{minutes/60:0}:{minutes%60:00}";

если minutes может быть отрицательный, вы должны добавить Math.Abs:

// -2000 -> -33:20
label1.Text = $"{minutes/60:0}:{Math.Abs(minutes)%60:00}";

public static void Main()
{
    //assigning values to variable
    double minutes = 2000;
    TimeSpan tspan = TimeSpan.FromMinutes(minutes); //converting minutes to timespan
    string res1 = (int)tspan.TotalHours +" Hours " + tspan.Minutes +" Minutes"; 

    string res2= (int)tspan.TotalHours + ":"+tspan.Minutes; 

    string res3= Convert.ToInt32(tspan.TotalHours)  + "."+tspan.Minutes +" Hours"; 

    Console.WriteLine(res1);
    Console.WriteLine(res2);
    Console.WriteLine(res3);
}

выход:

33 Hours 20 Minutes
33:20
33.20 Hours

сделайте это вручную и используйте

string.Format("{0:D2}:{1:D2}",(int)minutes/60, (int)minutes%60)

или без литья:

string.Format("{0:00}:{1:00}", minutes/60, minutes%60)

начиная с C#6 с интерполяцией строк:

$"{minutes/60:00}:{minutes%60:00}"