从 Timespan Totalhours 和 Minutes 中提取

Extract from Timespan Totalhours and Minutes

我从 TimeSpan.TotalHours 开始 24,75 小时。 我如何转换它以获得完整而不是圆形小时(= 24)加上分钟(0,75小时= 45分钟)?所以结果应该是 hours = 24 and minutes = 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}";