Crate compile_time

source ·
Expand description

This crate provides macros for getting the compile time, at compile time, either as time::Date, time::Time, time::OffsetDateTime, string, or UNIX timestamp.

Example

const COMPILE_DATE: time::Date = compile_time::date!();
const COMPILE_TIME: time::Time = compile_time::time!();
const COMPILE_DATETIME: time::OffsetDateTime = compile_time::datetime!();

const COMPILE_DATE_STRING: &str = compile_time::date_str!();
const COMPILE_TIME_STRING: &str = compile_time::time_str!();
const COMPILE_DATETIME_STRING: &str = compile_time::datetime_str!();

// Evaluation is only done once.
assert_eq!(COMPILE_DATETIME, compile_time::datetime!());

// Date string is formatted as yyyy-MM-dd.
let year = COMPILE_DATETIME.year();
let month: u8 = COMPILE_DATETIME.month().into();
let day = COMPILE_DATETIME.day();
let date_string = format!("{year:04}-{month:02}-{day:02}");
assert_eq!(COMPILE_DATE_STRING, date_string);

// Time is formatted as hh:mm::ss.
let hour = COMPILE_DATETIME.hour();
let minute = COMPILE_DATETIME.minute();
let second = COMPILE_DATETIME.second();
let time_string = format!("{hour:02}:{minute:02}:{second:02}");
assert_eq!(COMPILE_TIME_STRING, time_string);

// Date-time is formatted as yyyy-MM-ddThh:mm::ssZ.
let datetime_string = format!("{date_string}T{time_string}Z");
assert_eq!(COMPILE_DATETIME_STRING, datetime_string);

// UNIX time in seconds.
assert_eq!(COMPILE_DATETIME.unix_timestamp(), compile_time::unix!());

Macros

  • Compile date as time::Date.
  • Compile date as &'static str in YYY-MM-DD format.
  • Compile date and time as time::OffsetDateTime.
  • Compile time as &'static str in yyyy-MM-ddThh:mm:ssZ format.
  • Compile time as time::Time.
  • Compile time as &'static str in hh:mm:ss format.
  • Compile date and time as UNIX timestamp in seconds.