rtz 0.3.0

A tool to easily work with time zones via a binary, a library, or a server.
Documentation

Build and Test codecov Version Crates.io GitHub all releases npm Documentation Rust License:MIT

rtz

A self-contained timezone library / binary / server for Rust / JS (via WASM) (free server).

Binary Usage

Install

Cargo:

$ cargo install rtz

NPM:

$ npm install --save rtzweb

Help Docs

$ rtz

A tool to easily work with time zones via a binary, a library, or a server.

Usage: rtz [COMMAND]

Commands:
  resolve   Resolve a timezone from a lng,lat pair
  generate  Generate the bincoded timezone and cache files
  help      Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

Resolve a Time Zone

$ rtz resolve "-87.62,41.88"

Friendly Name:   America/Chicago
UTC Offset:      UTC-06:00
Offset Seconds:  -21600
Description:     Canada (almost all of Saskatchewan), Costa Rica, El Salvador, Ecuador (Galapagos Islands), Guatemala, Honduras, Mexico (most), Nicaragua,
DST Description: Canada (Manitoba), United States (Illinois, most of Texas)

Generate the Cache Files

$ rtz generate /assets/ne_10m_time_zones.geojson

Library Usage

Add this to your Cargo.toml:

[dependencies]
rtz = "*" #choose a version

Examples

use rtzlib::base::geo::get_timezone;

// Query a time zone for a given `(lng,lat)`.
assert_eq!(
    get_timezone(-121., 46.)
        .unwrap()
        .friendly_name
        .as_ref()
        .unwrap(),
    "America/Los_Angeles"
);

JS Usage

The npm package is available here.

First, load the module as you would any other ES module.

import * as rtz from 'rtzweb/rtzlib.js';

Then, you can use the library similarly as you would in Rust.

let tz = rtz.getTimeZone(-121, 46);
tz.friendly_name; // "America/Los_Angeles"

Feature Flags

The library and binary both support various feature flags. Of most important note are:

  • default = ["cli"]
  • cli: enables the CLI features, and can be removed if only compiling the library.
  • wasm: enables the WASM features, and is required to build an NPM package via wasm-pack.
  • server: enables the serve subcommand, which starts a Rocket web server that can respond to time zone requests.

Test

cargo test

Bench

cargo bench

License

MIT