Resolve geographical coordinates to timezones and countries. This is a Swift wrapper for ZoneDetect.
A timezone database with up to 20 meter resolution is embedded as a bundle resource (~5 MB). If you want to manually specify the database location, use try SwiftTimeZoneLookup(databasePath: "/path_to_timezone16_21_files/..")
import SwiftTimeZoneLookup
let database = try SwiftTimeZoneLookup()
guard let timezone = database.simple(latitude: 47.5, longitude: 8.6) else {
fatalError("Timezone not found, coordinates invalid?")
}
print(timezone) // "Europe/Zurich"
guard let lookup = database.lookup(latitude: 47.5, longitude: 8.6) else {
fatalError("Timezone not found, coordinates invalid?")
}
print(lookup) // SwiftTimeZoneLookupResult(timezone: "Europe/Zurich", countryName: Optional("Switzerland"), countryAlpha2: Optional("CH"))
Build database
SwiftTimeZoneLookup comes with an integrated database. The database can be updated with the following commands:
git clone --recurse-submodules git@github.com:patrick-zippenfenig/SwiftTimeZoneLookup.git
brew install shapelib wget
cd Submodules/ZoneDetect/database/builder
# make sure to select to newest version in make.db script
LIBRARY_PATH=/opt/homebrew/Cellar/shapelib/1.5.0/lib CPATH=/opt/homebrew/Cellar/shapelib/1.5.0/include ./makedb.sh
cp out_v1/timezone* ../../../../Sources/SwiftTimeZoneLookup/Resources
SwiftTimeZoneLookup
Resolve geographical coordinates to timezones and countries. This is a Swift wrapper for ZoneDetect.
A timezone database with up to 20 meter resolution is embedded as a bundle resource (~5 MB). If you want to manually specify the database location, use
try SwiftTimeZoneLookup(databasePath: "/path_to_timezone16_21_files/..")
Embedded timezone database version 2023b (2023-03-26).
This library is thread safe.
Usage
Add
SwiftTimeZoneLookup
as a dependency to yourPackage.swift
In your code
Build database
SwiftTimeZoneLookup comes with an integrated database. The database can be updated with the following commands:
Credits
ZoneDetect as the upstream library.
Contains data from Natural Earth, placed in the Public Domain. Contains information from https://github.com/evansiroky/timezone-boundary-builder, which is made available here under the Open Database License (ODbL)