From b0b1c91e8f49470ce6232973f4adb0160a6c021e Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sat, 14 Oct 2006 15:08:45 +0000 Subject: * Add option to bbackupquery list command to show times in UTC or local time (refs #3) --- lib/common/BoxTimeToText.cpp | 38 ++++++++++++++++++++++++++------------ lib/common/BoxTimeToText.h | 2 +- 2 files changed, 27 insertions(+), 13 deletions(-) (limited to 'lib') diff --git a/lib/common/BoxTimeToText.cpp b/lib/common/BoxTimeToText.cpp index ff8b2e49..dbeefe1b 100644 --- a/lib/common/BoxTimeToText.cpp +++ b/lib/common/BoxTimeToText.cpp @@ -20,23 +20,31 @@ // -------------------------------------------------------------------------- // // Function -// Name: BoxTimeToISO8601String(box_time_t) -// Purpose: Convert a 64 bit box time to a ISO 8601 complient string +// Name: BoxTimeToISO8601String(box_time_t, bool) +// Purpose: Convert a 64 bit box time to a ISO 8601 compliant +// string, either in local or UTC time // Created: 2003/10/10 // // -------------------------------------------------------------------------- -std::string BoxTimeToISO8601String(box_time_t Time) +std::string BoxTimeToISO8601String(box_time_t Time, bool localTime) { + time_t timeInSecs = BoxTimeToSeconds(Time); + char str[128]; // more than enough space + #ifdef WIN32 struct tm *time; - time_t bob = BoxTimeToSeconds(Time); + __time64_t winTime = timeInSecs; - __time64_t winTime = bob; + if(localTime) + { + time = _localtime64(&winTime); + } + else + { + time = _gmtime64(&winTime); + } - time = _gmtime64(&winTime); - char str[128]; // more than enough space - - if ( time == NULL ) + if(time == NULL) { // ::sprintf(str, "%016I64x ", bob); return std::string("unable to convert time"); @@ -46,11 +54,17 @@ std::string BoxTimeToISO8601String(box_time_t Time) 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); + + if(localTime) + { + localtime_r(&timeInSecs, &time); + } + else + { + 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); diff --git a/lib/common/BoxTimeToText.h b/lib/common/BoxTimeToText.h index a25c70b6..21fa5d57 100644 --- a/lib/common/BoxTimeToText.h +++ b/lib/common/BoxTimeToText.h @@ -13,7 +13,7 @@ #include #include "BoxTime.h" -std::string BoxTimeToISO8601String(box_time_t Time); +std::string BoxTimeToISO8601String(box_time_t Time, bool localTime); #endif // BOXTIMETOTEXT__H -- cgit v1.2.3