54:33:00! = 54 Stunden, 20 Minuten und null Sekunden
ich Ihre Logik denken off so weit sein kann, als das, was Sie ausgeben als TimeSpan.TotalHours
beabsichtigen, die Ausgabe wird ein Doppel-und nicht die richtige Anzahl von Minuten.
// Get your timespan (using the same number of minutes as expected)
var timespan = TimeSpan.FromMinutes(3260);
// This would output a double and not a string
timespan.TotalMinutes; // yields 55.3333 (i.e. 54 hours and 1/3 or 20 minutes)
So glaube ich nicht, dass Sie tatsächlich ausgeben 54:33:00
wollen würden, dass nicht richtig wären, da es 54 Stunden bedeuten würde, und 33 Minuten, wie auf den richtigen Wert von 54 Stunden und 20 Minuten gegenüber, die Sie können durch die String.Format()
Methode tun:
// This would output 54:20:00, which should be your correct answer
String.Format("{0:00}:{1:00}:{2:00}",(int)timespan.TotalHours, timespan.Minutes,0)
So ein Beispiel Ihrer ursprünglichen Code könnte wie folgt aussehen:
var talktime = TimeSpan.FromMinutes((int)g.Sum(b => b.Field<int?>("talkTime")));
// Use your talktime to set your proper string variable
TalkTime = String.Format("{0:00}:{1:00}:{2:00}",(int)talktime.TotalHours, talktime.Minutes,0);
können Sie see a working example of this in action here.
Um zu vermeiden, * Aufrunden * für 'timespan.TotalHour' (' 205,75 -> 206') zu tun, bitte wandeln es in 'int': 'String.Format (" ... ", (int) timespan.TotalHours, ...);' –
Nice Catch Dmitry, ich habe den Zusatz entsprechend gemacht. –