1/*
2 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#include "ktimezone.h"
8#include "data/timezone_name_table.cpp"
9#include "kcountry.h"
10#include "spatial_index_p.h"
11
12#include <QTimeZone>
13
14#include <cstring>
15
16const char *KTimeZone::fromLocation(float latitude, float longitude)
17{
18 const auto entry = SpatialIndex::lookup(lat: latitude, lon: longitude);
19 return timezone_name_table + entry.m_tz;
20}
21
22KCountry KTimeZone::country(const char *ianaId)
23{
24 // Asia/Bangkok is special as it's the only "regular" IANA tz that covers more than one country
25 // (northern Vietnam and Thailand in this case), QTimeZone however reports it as Thailand.
26 if (!ianaId || std::strcmp(s1: ianaId, s2: "") == 0 || std::strcmp(s1: ianaId, s2: "Asia/Bangkok") == 0) {
27 return {};
28 }
29
30 return KCountry::fromQLocale(country: QTimeZone(ianaId).territory());
31}
32

source code of ki18n/src/localedata/ktimezone.cpp