#ntp-client #sntp #timestamp #protocols #chrono #request #sntp-client

sntp_request

Tiny Rust library to request timestamp from NTP servers trough SNTP protocol

8 stable releases

2.0.1 Dec 21, 2022
2.0.0 Apr 13, 2020
1.1.1 Jan 7, 2020

#235 in Date and time

Download history 151/week @ 2024-12-01 233/week @ 2024-12-08 228/week @ 2024-12-15 124/week @ 2024-12-22 139/week @ 2024-12-29 107/week @ 2025-01-05 58/week @ 2025-01-12 73/week @ 2025-01-19 70/week @ 2025-01-26 78/week @ 2025-02-02 105/week @ 2025-02-09 156/week @ 2025-02-16 119/week @ 2025-02-23 179/week @ 2025-03-02 141/week @ 2025-03-09 161/week @ 2025-03-16

601 downloads per month

MIT/Apache

11KB
104 lines

sntp_request

CI/CD Crates.io Documentation License

sntp_request Tiny Rust library to request timestamps from NTP servers through SNTP protocol.

Example

The example below shows how to obtain precise timestamp from main NTP server:

use chrono::{Local, TimeZone};
use sntp_request::SntpRequest;

fn main() {
    let sntp = SntpRequest::new();
    let timestamp = Local.timestamp_opt(sntp.get_unix_time().unwrap(), 0);
    println!("{}", timestamp.unwrap());
}

Also, it is possible to get the raw timestamp, for example:

use sntp_request::SntpRequest;

fn main() {
    let sntp = SntpRequest::new();
    let timestamp = sntp.get_raw_time().unwrap();
    let nsec = (timestamp.frac as f64 / u32::max_value() as f64) * 1000.0;
    println!("seconds: {} frac: {}", timestamp.secs, timestamp.frac);
    println!("milliseconds: {}", nsec);
}

Contributions

Pull Requests are welcome! =)

License

sntp_request is licensed under the Apache License 2.0 or MIT License.

No runtime deps