+ // Suppose we have wxTimeSpan ts(1 /* hour */, 2 /* min */, 3 /* sec */)
+ //
+ // Then, of course, ts.Format("%H:%M:%S") must return "01:02:03", but the
+ // question is what should ts.Format("%S") do? The code here returns "3273"
+ // in this case (i.e. the total number of seconds, not just seconds % 60)
+ // because, for me, this call means "give me entire time interval in
+ // seconds" and not "give me the seconds part of the time interval"
+ //
+ // If we agree that it should behave like this, it is clear that the
+ // interpretation of each format specifier depends on the presence of the
+ // other format specs in the string: if there was "%H" before "%M", we
+ // should use GetMinutes() % 60, otherwise just GetMinutes() &c
+
+ // we remember the most important unit found so far
+ enum TimeSpanPart
+ {
+ Part_Week,
+ Part_Day,
+ Part_Hour,
+ Part_Min,
+ Part_Sec,
+ Part_MSec
+ } partBiggest = Part_MSec;
+
+ for ( const wxChar *pch = format; *pch; pch++ )