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
。
如何正确?
正确的使用方法不是使用 DateTime
的 ToString
重载——因为不可能在那里显示 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);
我个人使用这个:
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;
}
我正在将分钟数转换为小时数。所以如果我有 minutes = 12534
。结果应该是208:54
。下面的代码无法带来这个结果。
TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = spWorkMin.ToString(@"hh\:mm");
Console.WriteLine(workHours);
结果是16:54
。
如何正确?
正确的使用方法不是使用 DateTime
的 ToString
重载——因为不可能在那里显示 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);
我个人使用这个:
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;
}