common/time_zone: Simplify GetOsTimeZoneOffset()

We can simplify this function down into a single line with the use of
fmt. A benefit with the fmt approach is that the fmt variant of
localtime is thread-safe as well, making GetOsTimeZoneOffset()
thread-safe as well.
This commit is contained in:
Lioncash 2020-08-15 12:52:35 -04:00
parent db96034ea4
commit fe97d34156

View File

@ -3,8 +3,9 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <chrono> #include <chrono>
#include <iomanip> #include <ctime>
#include <sstream>
#include <fmt/chrono.h>
#include "common/logging/log.h" #include "common/logging/log.h"
#include "common/time_zone.h" #include "common/time_zone.h"
@ -16,13 +17,8 @@ std::string GetDefaultTimeZone() {
} }
static std::string GetOsTimeZoneOffset() { static std::string GetOsTimeZoneOffset() {
const std::time_t t{std::time(nullptr)}; // Get the current timezone offset, e.g. "-400", as a string
const std::tm tm{*std::localtime(&t)}; return fmt::format("%z", fmt::localtime(std::time(nullptr)));
std::stringstream ss;
ss << std::put_time(&tm, "%z"); // Get the current timezone offset, e.g. "-400", as a string
return ss.str();
} }
static int ConvertOsTimeZoneOffsetToInt(const std::string& timezone) { static int ConvertOsTimeZoneOffsetToInt(const std::string& timezone) {