bee_common/
time.rs

1// Copyright 2021 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4//! A module that provides common functions for 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)").unwrap();
21
22    // We know this is correct.
23    time.format(&format_description).unwrap()
24}
25
26/// Takes a unix timestamp and returns a formatted `String`.
27pub fn format_unix_timestamp(timestamp: i64) -> String {
28    format(&from_unix_timestamp(timestamp))
29}