我正试图解决这个问题:
我有大量的会议记录,我想将它们转换为小时,当我尝试使用TimeSpan
时,它总是会显示几天和几小时。
我的示例代码:
double minutes = 2000 ;
TimeSpan hours = TimeSpan.FromMinutes(minutes);
label1.Text = hours.ToString(@"hh\:mm");
输出结果 09:20 ,但我想要这个结果 33:20
如何转换分钟以获得确切的小时数?
答案 0 :(得分:15)
此代码会生成您要求的33:20
结果:
double minutes = 2000;
TimeSpan ts = TimeSpan.FromMinutes(minutes);
var res = $"{(int)ts.TotalHours}:{ts.Minutes}";
答案 1 :(得分:8)
您需要在TotalHours
对象上使用TimeSpan
。
string.Format("{0}:{1}",
(int) hours.TotalHours,
hours.Minutes);
答案 2 :(得分:1)
另一种可能性是使用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}";
答案 3 :(得分:0)
手动操作并使用
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}"
答案 4 :(得分:0)
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