#system-time #macos #ntp #epoch #timezone #conversion

thetime

A simple but powerful Rust library for dealing with the time, both NTP and System. Contains wrappers for functions often buried in modules. Has extensive support for unusual epochs (Windows LDAP 100ns, MacOS and MacOS CFA, SAS 4GL, WebKit and Chromium 1μs). Supports timezone conversion, and addition/subtraction of various amounts

19 releases (4 breaking)

0.5.6 Jan 8, 2024
0.5.5 Jan 8, 2024
0.4.5 Jan 6, 2024
0.3.0 Jan 4, 2024
0.1.2 Jan 3, 2024

#133 in Date and time

47 downloads per month
Used in humantalk

Apache-2.0

50KB
743 lines

thetime

GitHub Actions crates.io thetime on docs.rs

Simple Rust library for time

  • builds on top of std (almost exclusively core), chrono and time
  • very simple and intuitive to use
  • wraps some very useful functions that are usually buried deep in modules
  • has extensive support for unusual epochs
  • Fully supports without overflow, as the core data is stored as u64s, times since 01-01-1601, and up to, in my testing, "a+262143-01-01

Features

ntp

  • Default: true
  • includes: Ntp struct

Which traits you need

// Basic functionality
use thetime::{System, Ntp, Time};

// Diff functions
use thetime::{System, Ntp, Time, TimeDiff};

// String direct strptime
use thetime::{System, Ntp, Time, StrTime};

// Timestamp int conversion
use thetime::{System, Ntp, Time, IntTime}

// Timezones
use thetime::Tz;

Utilities provided

List

  • NTP server pinging
  • System time grabbing
  • time diff functions
  • string to time structs
  • timestamps as integers to time structs
  • strptime and strftime
  • convienent now method in the root for easy access
  • various epochs
  • 01-01-1904 (MacOS)
  • 01-01-2001 (MacOS Absolute)
  • 01-01-1601 (Windows, measured in 100ns chunks)
  • 01-01-1960 (SAS 4GL)
  • 01-01-1601 (Webkit, measured in μs)

Dependencies

~1.5–7.5MB
~48K SLoC