从Timespan Totalhours和Minutes中提取

Kᴀτ*_*ᴀτᴢ 2 c# timespan

我从TimeSpan.TotalHours24,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;
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

只需通过强制转换适当地舍入总小时数,然后使用该Minutes属性:

int hours = (int) timeSpan.TotalHours;
int minutes = timeSpan.Minutes;
Run Code Online (Sandbox Code Playgroud)

如果您曾经有一个否定的TimeSpan,您应该考虑您想要的结果并添加适当的测试 - 您很可能会发现上面的简单代码并没有达到您想要的效果。

  • 为什么使用 TotalHours 而不是 hours ? (3认同)
  • 因为您可以将 TotalHours 设为 49。在这种情况下,Hours 将为 1。不?每当我看到@Jon Skeet 回答一个问题时,这个问题就得到了回答。点赞,我的朋友。 (3认同)

les*_*ode 6

怎么样:

var ts = TimeSpan.FromHours(24.75);
var h = System.Math.Floor(ts.TotalHours);
var m = (ts.TotalHours - h) * 60;
Run Code Online (Sandbox Code Playgroud)

甚至:

var h = (int) (ts.TotalMinutes / 60);
var m = ts.TotalMinutes % 60;
Run Code Online (Sandbox Code Playgroud)