Да, но вы просто используете стандартные механизмы библиотеки c.
установить желаемый часовой пояс в среде, создав строку:
std::string tz = "TZ=Australia/Sydney";
putenv(const_cast<char *>(tz.c_str()));
tzset(); // Initialize timezone data
time_t aTime = time(NULL); // get the time - this is GMT based.
struct tm retTime;
localtime_r(aTime, &retTime); // Convert time into current timezone.
char destString[1024];
strftime(destString, 1023, "%Y%m%d %Z", &retTime); // Format the output in the local time.
std::cout << destString << std::endl;
Проблема в том, что этот код не является потокобезопасным - несколько потоков, изменяющих информацию о часовом поясе, плохо заканчиваются.
Этот ответ Дает вам способ сделать это, используя повышение, которое определенно намного проще.