ITime defines an output operator that writes an ITime object to an output stream in the format hh:mm:ss. If you want to write the object out in a different format, you should convert the object to an IString using the asString member function. This member function accepts a char* argument containing a format specifier. The format specifier is the same one as used by the C library function strftime. The following program displays some valid specifiers and the output they produce:
// Examples of ITime output
#include <istring.hpp> #include <itime.hpp> #include <iostream.h> #include <iomanip.h> // needed for setw(), to set output stream width
void main() {
char* FormatStrings[]={
"%H : %M and %S seconds", // %H, %M, %S - 2 digits for hrs/mins/secs
"%r", // %r - standard 12-hour clock with am/pm
"%T", // %T - standard 24 hour clock
"%T %Z", // %Z - local time zone code
"%1M past %1I %p" // %1... - One digit for hour/minute
}; // %p - am/pm
cout.setf(ios::left,ios::adjustfield); // Left-justify output
cout << setw(30) << "Format String" // Title text
<< setw(40) << "Formatted ITime object" << endl;
for (int i=0;i<5;i++) { // Show each time
IString Formatted=ITime::now().asString(FormatStrings[i]);
cout << setw(30) << FormatStrings[i]
<< setw(40) << Formatted << endl;
}
}
The program produces output that looks like the following:
Format String Formatted ITime object %H : %M and %S seconds 16 : 13 and 04 seconds %r 04:13:04 PM %T 16:13:04 %T %Z 16:13:04 EST %1M past %1I %p 13 past 4 PM