c# TimeSpan 将分钟转换为小时

c# TimeSpan Converting Minutes to Hours

我正在将分钟数转换为小时数。所以如果我有 minutes = 12534。结果应该是208:54。下面的代码无法带来这个结果。

TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = spWorkMin.ToString(@"hh\:mm");
Console.WriteLine(workHours);

结果是16:54

如何正确?

正确的使用方法不是使用 DateTimeToString 重载——因为不可能在那里显示 TotalHours ——而是 string.Format 方法:

string.Format("{0:00}:{1:00}", (int)spWorkMin.TotalHours, spWorkMin.Minutes);

格式说明符hh将显示小时部分,而不是总小时数。您必须使用 TotalHours 强制转换为整数来手动创建一个字符串,以根据需要显示它并向其添加分钟。

var totalMinutes = 12534;
Console.WriteLine("{0:00}:{1:00}", totalMinutes / 60, totalMinutes % 60);

或者

var totalMinutes = 12534;
var time = TimeSpan.FromMinutes(totalMinutes);
Console.WriteLine("{0:00}:{1:00}", (int)time.TotalHours, time.Minutes);

请参阅 https://dotnetfiddle.net/gYEsj2 来玩这个

来自 MSDN 文档:

The "hh" custom format specifier outputs the value of the TimeSpan::Hours property, which represents the number of whole hours in the time interval that is not counted as part of its day component.

获得所需结果的一种快速方法如下:

TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = string.Format("{0}:{1:00}", (int)spWorkMin.TotalHours, spWorkMin.Minutes);
Console.WriteLine(workHours);
TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = string.Format("{0}:{1}", (int)spWorkMin.TotalHours, spWorkMin.Minutes);
Console.WriteLine(workHours);

你需要使用 TimeSpan.TotalHours 属性

TotalHours 属性 代表整小时和小数小时,而 Hours 属性 代表整小时。

    TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
    string workHours = spWorkMin.ToString(@"hh\:mm");
    Console.WriteLine(spWorkMin.TotalHours);

https://dotnetfiddle.net/JRCLra

我个人使用这个:

public static double MinutsTohHours(int Minuti)
    {
        double Tempo = 0;
            Tempo = ((double)(Minuti % 60) / 100);
            var n = (double)Minuti / 60;
            return Math.Floor((double)Minuti / 60) + Tempo;
       
    }