mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 08:00:06 +00:00
Fallback gracefully when zoned time processing fails
This commit is contained in:
parent
7161a5a3b2
commit
570fedca33
1 changed files with 28 additions and 7 deletions
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include <scwx/util/time.hpp>
|
||||
#include <scwx/util/enum.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
#include <sstream>
|
||||
#include <unordered_map>
|
||||
|
|
@ -25,6 +26,9 @@ namespace scwx
|
|||
namespace util
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ = "scwx::util::time";
|
||||
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
|
||||
|
||||
static const std::unordered_map<ClockFormat, std::string> clockFormatName_ {
|
||||
{ClockFormat::_12Hour, "12-hour"},
|
||||
{ClockFormat::_24Hour, "24-hour"},
|
||||
|
|
@ -71,18 +75,35 @@ std::string TimeString(std::chrono::system_clock::time_point time,
|
|||
{
|
||||
if (timeZone != nullptr)
|
||||
{
|
||||
zoned_time zt = {timeZone, timeInSeconds};
|
||||
try
|
||||
{
|
||||
zoned_time zt = {timeZone, timeInSeconds};
|
||||
|
||||
if (clockFormat == ClockFormat::_24Hour)
|
||||
{
|
||||
os << format(FORMAT_STRING_24_HOUR, zt);
|
||||
if (clockFormat == ClockFormat::_24Hour)
|
||||
{
|
||||
os << format(FORMAT_STRING_24_HOUR, zt);
|
||||
}
|
||||
else
|
||||
{
|
||||
os << format(FORMAT_STRING_12_HOUR, zt);
|
||||
}
|
||||
}
|
||||
else
|
||||
catch (const std::exception& ex)
|
||||
{
|
||||
os << format(FORMAT_STRING_12_HOUR, zt);
|
||||
static bool firstException = true;
|
||||
if (firstException)
|
||||
{
|
||||
logger_->warn("Zoned time error: {}", ex.what());
|
||||
firstException = false;
|
||||
}
|
||||
|
||||
// In the case where there is a time zone error (e.g., timezone
|
||||
// database, unicode issue, etc.), fall back to UTC
|
||||
timeZone = nullptr;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
if (timeZone == nullptr)
|
||||
{
|
||||
if (clockFormat == ClockFormat::_24Hour)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue