我正在将分钟转换为小时。所以如果我有
minutes = 12534
。结果应该是208:54
。下面的代码无法带来这个结果。
TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = spWorkMin.ToString(@"hh\:mm");
Console.WriteLine(workHours);
结果是
16:54
。
如何获得正确的结果?
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 来玩这个
正确的使用方法不是使用
ToString
的 DateTime
重载 – 因为不可能在那里显示 TotalHours
– 而是使用 string.Format
方法:
string.Format("{0:00}:{1:00}", (int)spWorkMin.TotalHours, spWorkMin.Minutes);
您需要使用
TimeSpan.TotalHours
属性
TotalHours 属性代表整个小时和小数小时,而
Hours
属性代表整个小时。
TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = spWorkMin.ToString(@"hh\:mm");
Console.WriteLine(spWorkMin.TotalHours);
格式说明符
hh
将显示小时部分,而不是总小时数。您必须使用 TotalHours
转换为整数来手动创建一个字符串,以按您想要的方式显示它,并添加分钟。
TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = string.Format("{0}:{1}", (int)spWorkMin.TotalHours, spWorkMin.Minutes);
Console.WriteLine(workHours);
来自 MSDN 文档:
“hh”自定义格式说明符输出 TimeSpan::Hours 属性的值,该值表示时间间隔中不计入其日部分的整小时数。
获得您想要的结果的一种快速方法如下:
TimeSpan spWorkMin = TimeSpan.FromMinutes(12534);
string workHours = string.Format("{0}:{1:00}", (int)spWorkMin.TotalHours, spWorkMin.Minutes);
Console.WriteLine(workHours);
我个人用这个:
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;
}
using System;
var days = 1;
var hours = 23; //max 23
var min = 12; //max 59
var TotalMin = (days*24*60)+(hours*60)+min;
Console.WriteLine("TotalMins "+ TotalMin);
//return back to the original days,hours,minutes
var Days = (TotalMin/(24*60));
var _minutes = (TotalMin%(60*60));
var Hours = (_minutes/60);
var Minutes = _minutes - (Hours*60);
Console.WriteLine($"{Days} , {Hours} , {Minutes}");
我需要以以下格式显示总小时和分钟:HH:mm。 使用下面的扩展方法。
public static string TohhmmFormatString(this TimeSpan timeSpan)
{
string totalHours = ((int)timeSpan.TotalHours).ToString();
string minutes = timeSpan.Minutes.ToString();
if (timeSpan.Seconds == 59 && (timeSpan.Milliseconds == 999 || timeSpan.Microseconds == 999))
{
if (timeSpan.Minutes + 1 == 60)
{
minutes = "00";
totalHours = ((int)timeSpan.TotalHours + 1).ToString();
}
else
{
minutes = (timeSpan.Minutes + 1).ToString();
}
}
return $"{totalHours}:{minutes}";
}