@@ -158,18 +158,23 @@ void DayTime::subtractTime(const DayTime& other)
158158char achBuf[32 ];
159159
160160// Convert to a standard string (like 14:45:06)
161- const char * DayTime::ToString () const
161+ const char * DayTime::ToString () const
162162{
163163 char * p = achBuf;
164164
165- if (hours < 10 ) {
165+ int absHours = hours < 0 ? -hours : hours;
166+ if (hours < 0 )
167+ {
168+ *p++ = ' -' ;
169+ }
170+ if (absHours < 10 ) {
166171 *p++ = ' 0' ;
167172 }
168173 else {
169- *p++ = ' 0' + (hours / 10 );
174+ *p++ = ' 0' + (absHours / 10 );
170175 }
171176
172- *p++ = ' 0' + (hours % 10 );
177+ *p++ = ' 0' + (absHours % 10 );
173178
174179 *p++ = ' :' ;
175180 if (mins < 10 ) {
@@ -189,7 +194,10 @@ const char* DayTime::ToString() const
189194 }
190195
191196 *p++ = ' 0' + (secs % 10 );
192- sprintf (p, " (%.4f)" , this ->getTotalHours ());
197+ *p++ = ' ' ;
198+ *p++ = ' (' ;
199+ strcpy (p, String (this ->getTotalHours (), 5 ).c_str ());
200+ strcat (p, " )" );
193201 return achBuf;
194202}
195203
@@ -260,7 +268,7 @@ const char* DegreeTime::ToString() const
260268 *p++ = ' 0' + (mins / 10 );
261269 }
262270 *p++ = ' 0' + (mins % 10 );
263-
271+
264272 *p++ = ' :' ;
265273 if (secs < 10 ) {
266274 *p++ = ' 0' ;
@@ -270,7 +278,10 @@ const char* DegreeTime::ToString() const
270278 }
271279
272280 *p++ = ' 0' + (secs % 10 );
273- sprintf (p, " (%.4f)" , NORTHERN_HEMISPHERE ? getTotalHours () + 90 : getTotalHours () - 90 );
281+ *p++ = ' ' ;
282+ *p++ = ' (' ;
283+ strcpy (p, String (NORTHERN_HEMISPHERE ? getTotalHours () + 90 : getTotalHours () - 90 , 4 ).c_str ());
284+ strcat (p, " )" );
274285
275286 return achBufDeg;
276287}
0 commit comments