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 strinYYY-MM-DDformat. - Compile date and time as
time::OffsetDateTime. - Compile time as
&'static strinyyyy-MM-ddThh:mm:ssZformat. - Compile time as
time::Time. - Compile time as
&'static strinhh:mm:ssformat. - Compile date and time as UNIX timestamp in seconds.