我从
TimeSpan.TotalHours
24,75 小时开始。
我怎样才能将其转换为完整的而不是圆形的小时(= 24)加上分钟(0.75小时= 45分钟)?所以结果应该是小时 = 24 分钟 = 45
我尝试将其转换为字符串并制作子字符串,但我想知道是否有比这更好的方法。
string test = Reststunden.TotalHours.ToString().Substring(Reststunden.TotalHours.ToString().IndexOf(","),3).Replace(",", "");
double Minuten = Convert.ToInt16(test) * 0.6;
好吧,通过强制转换适当舍入总小时数,然后使用
Minutes
属性:
int hours = (int) timeSpan.TotalHours;
int minutes = timeSpan.Minutes;
如果您的结果是否定的
TimeSpan
,您应该考虑您想要的结果并添加适当的测试 - 您很可能会发现上面的简单代码并不能达到您想要的效果。
怎么样:
var ts = TimeSpan.FromHours(24.75);
var h = System.Math.Floor(ts.TotalHours);
var m = (ts.TotalHours - h) * 60;
甚至:
var h = (int) (ts.TotalMinutes / 60);
var m = ts.TotalMinutes % 60;
我需要以以下格式显示总小时和分钟:HH:mm。 在其他答案的帮助下,我得到了以下结果:
var end = DateTime.Now;
var duration = end - StartUpTime;
var h = (int)(duration.TotalMinutes / 60);
var m = (int)(duration.TotalMinutes % 60);
var text = $"{h:D2}:{m:D2}";
我需要以以下格式显示总小时和分钟: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}";
}