S
Hallo zusammen!
1. Problem:
Ich will die Stunden und Minuten einer CTimeSpan ausgeben. Dabei sollte einstelligen Stunden eine 0 vorangestellt werden.
Lt. MSDN-Doku sollte dies mit %H auch geschehen (Code aus MSDN):
// example for CTimeSpan::Format
CTimeSpan ts( 3, 1, 5, 12 ); // 3 days, 1 hour, 5 min, and 12 sec
CString s = ts.Format( "Total days: %D, hours: %H, mins: %M, secs: %S" );
ATLASSERT( s == "Total days: 3, hours: 01, mins: 05, secs: 12" );
Also folgender Code:
CTimeSpan span(0, 1, 15, 0);
str = span.Format("%H:%M");
// Ergebnis: str = "1:15"
// Gewünschtes Ergebnis: "01:15"
Gibt es irgendwelche anderen Formatierungs-Zeichen, die in der MSDN nicht erwähnt werden?
2. Problem
Ich will eine negative Zeitspanne von -3:30 (bzw. eigentlich -03:30) darstellen, also folgender Code:
CTimeSpan span(0, -4, 30, 0); // -4h +30min == -3h und 30 min
str = span.Format("%H:%M");
// Ergebnis: str = "-3:-30"
// Gewünschtes Ergebnis: "-03:30"
Muss ich mich hier um die Formatierung selbst kümmern oder gibt es hier auch einen anderen Weg mit der Format-Funktion?
Ich weiß, dass diese Aufgaben ziemlich einfach zu umgehen sind zB mittels
CTimeSpan span (0, -4, 30, 0);
str.Format("%.2d:%.2d", span.GetHours(), span.GetMinutes());
// bzw.
str.Format("%.2d:%.2d", span.GetHours(), abs(span.GetMinutes()));
allerdings würde mich interessieren, ob das noch anders gehen würde?
danke, mfg
--------------------------
edit:
Mir ist gerade aufgefallen, dass eine CTimeSpan(0) als "00:00" und nicht als "0:0" mit der oben genannten Formatierung dargestellt wird...