time_helper/
lib.rs

1// Copyright 2021-2022 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4//! Provides common functionality for handling timestamps.
5
6/// Retrieves the current timestamp, at UTC.
7pub fn now_utc() -> time::OffsetDateTime {
8    time::OffsetDateTime::now_utc()
9}
10
11/// Creates a new time from a unix timestamp, at UTC.
12pub fn from_unix_timestamp(timestamp: i64) -> time::OffsetDateTime {
13    time::OffsetDateTime::from_unix_timestamp(timestamp).expect("timestamp out of range")
14}
15
16/// Produces a formatted `String` from a timestamp, displayed as local time.
17pub fn format(time: &time::OffsetDateTime) -> String {
18    // This format string is correct, so unwrapping is fine.
19    let format_description =
20        time::format_description::parse("[year]-[month]-[day] [hour]:[minute]:[second] (UTC)")
21            .unwrap();
22
23    // We know this is correct.
24    time.format(&format_description).unwrap()
25}
26
27/// Takes a unix timestamp and returns a formatted `String`.
28pub fn format_unix_timestamp(timestamp: i64) -> String {
29    format(&from_unix_timestamp(timestamp))
30}