~aleteoryx/muditaos

muditaos/module-services/service-time/TimezoneHandler.cpp -rw-r--r-- 843 bytes
a405cad6Aleteoryx trim readme 6 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md

#include "service-time/TimezoneHandler.hpp"
#include <time/time_constants.hpp>
#include <iomanip>

auto TimezoneHandler::getTimezone() -> std::string const
{
    auto constexpr maximumTimezoneOffset = 11;
    auto sign                            = offset.count() >= 0 ? "-" : "+";

    auto hours   = abs(offset.count() / utils::time::minutesInHour);
    auto minutes = abs(offset.count() % utils::time::minutesInHour);

    if (hours > maximumTimezoneOffset || hours < -maximumTimezoneOffset) {
        hours   = 0;
        minutes = 0;
    }
    std::stringstream stream;
    stream << "MUD" << sign << hours << ":" << std::setw(2) << std::setfill('0') << minutes;

    return stream.str();
}