// -------------------------------------------------------------------------- // // File // Name: BoxTimeToText.cpp // Purpose: Convert box time to text // Created: 2003/10/10 // // -------------------------------------------------------------------------- #include "Box.h" #include #include #include #include "BoxTimeToText.h" #include "MemLeakFindOn.h" // -------------------------------------------------------------------------- // // Function // Name: BoxTimeToISO8601String(box_time_t) // Purpose: Convert a 64 bit box time to a ISO 8601 complient string // Created: 2003/10/10 // // -------------------------------------------------------------------------- std::string BoxTimeToISO8601String(box_time_t Time) { #ifdef WIN32 struct tm *time; time_t bob = BoxTimeToSeconds(Time); __time64_t winTime = bob; time = _gmtime64(&winTime); char str[128]; // more than enough space if ( time == NULL ) { // ::sprintf(str, "%016I64x ", bob); return std::string("unable to convert time"); } sprintf(str, "%04d-%02d-%02dT%02d:%02d:%02d", time->tm_year + 1900, time->tm_mon + 1, time->tm_mday, time->tm_hour, time->tm_min, time->tm_sec); #else // ! WIN32 time_t timeInSecs = BoxTimeToSeconds(Time); struct tm time; gmtime_r(&timeInSecs, &time); char str[128]; // more than enough space sprintf(str, "%04d-%02d-%02dT%02d:%02d:%02d", time.tm_year + 1900, time.tm_mon + 1, time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec); #endif // WIN32 return std::string(str); }