pub mod seconds {
pub fn to_minutes(value: f64) -> f64 {
value / 60.0
}
pub fn to_hours(value: f64) -> f64 {
value / 3600.0
}
pub fn to_days(value: f64) -> f64 {
value / 86400.0
}
pub fn to_weeks(value: f64) -> f64 {
value / 604800.0
}
pub fn to_years(value: f64) -> f64 {
value / 31557600.0 }
pub fn to_milliseconds(value: f64) -> f64 {
value * 1000.0
}
pub fn to_microseconds(value: f64) -> f64 {
value * 1_000_000.0
}
pub fn to_nanoseconds(value: f64) -> f64 {
value * 1_000_000_000.0
}
}
pub mod minutes {
pub fn to_seconds(value: f64) -> f64 {
value * 60.0
}
pub fn to_hours(value: f64) -> f64 {
value / 60.0
}
pub fn to_days(value: f64) -> f64 {
value / 1440.0
}
pub fn to_weeks(value: f64) -> f64 {
value / 10080.0
}
pub fn to_years(value: f64) -> f64 {
super::seconds::to_years(to_seconds(value))
}
pub fn to_milliseconds(value: f64) -> f64 {
super::seconds::to_milliseconds(to_seconds(value))
}
pub fn to_microseconds(value: f64) -> f64 {
super::seconds::to_microseconds(to_seconds(value))
}
pub fn to_nanoseconds(value: f64) -> f64 {
super::seconds::to_nanoseconds(to_seconds(value))
}
}
pub mod hours {
pub fn to_seconds(value: f64) -> f64 {
value * 3600.0
}
pub fn to_minutes(value: f64) -> f64 {
value * 60.0
}
pub fn to_days(value: f64) -> f64 {
value / 24.0
}
pub fn to_weeks(value: f64) -> f64 {
value / 168.0
}
pub fn to_years(value: f64) -> f64 {
super::seconds::to_years(to_seconds(value))
}
pub fn to_milliseconds(value: f64) -> f64 {
super::seconds::to_milliseconds(to_seconds(value))
}
pub fn to_microseconds(value: f64) -> f64 {
super::seconds::to_microseconds(to_seconds(value))
}
pub fn to_nanoseconds(value: f64) -> f64 {
super::seconds::to_nanoseconds(to_seconds(value))
}
}
pub mod days {
pub fn to_seconds(value: f64) -> f64 {
value * 86400.0
}
pub fn to_minutes(value: f64) -> f64 {
value * 1440.0
}
pub fn to_hours(value: f64) -> f64 {
value * 24.0
}
pub fn to_weeks(value: f64) -> f64 {
value / 7.0
}
pub fn to_years(value: f64) -> f64 {
value / 365.25
}
pub fn to_milliseconds(value: f64) -> f64 {
super::seconds::to_milliseconds(to_seconds(value))
}
pub fn to_microseconds(value: f64) -> f64 {
super::seconds::to_microseconds(to_seconds(value))
}
pub fn to_nanoseconds(value: f64) -> f64 {
super::seconds::to_nanoseconds(to_seconds(value))
}
}
pub mod weeks {
pub fn to_seconds(value: f64) -> f64 {
value * 604800.0
}
pub fn to_minutes(value: f64) -> f64 {
value * 10080.0
}
pub fn to_hours(value: f64) -> f64 {
value * 168.0
}
pub fn to_days(value: f64) -> f64 {
value * 7.0
}
pub fn to_years(value: f64) -> f64 {
super::days::to_years(to_days(value))
}
pub fn to_milliseconds(value: f64) -> f64 {
super::seconds::to_milliseconds(to_seconds(value))
}
pub fn to_microseconds(value: f64) -> f64 {
super::seconds::to_microseconds(to_seconds(value))
}
pub fn to_nanoseconds(value: f64) -> f64 {
super::seconds::to_nanoseconds(to_seconds(value))
}
}
pub mod years {
pub fn to_seconds(value: f64) -> f64 {
value * 31557600.0 }
pub fn to_minutes(value: f64) -> f64 {
super::seconds::to_minutes(to_seconds(value))
}
pub fn to_hours(value: f64) -> f64 {
super::seconds::to_hours(to_seconds(value))
}
pub fn to_days(value: f64) -> f64 {
value * 365.25
}
pub fn to_weeks(value: f64) -> f64 {
super::days::to_weeks(to_days(value))
}
pub fn to_milliseconds(value: f64) -> f64 {
super::seconds::to_milliseconds(to_seconds(value))
}
pub fn to_microseconds(value: f64) -> f64 {
super::seconds::to_microseconds(to_seconds(value))
}
pub fn to_nanoseconds(value: f64) -> f64 {
super::seconds::to_nanoseconds(to_seconds(value))
}
}
pub mod milliseconds {
pub fn to_seconds(value: f64) -> f64 {
value / 1000.0
}
pub fn to_minutes(value: f64) -> f64 {
super::seconds::to_minutes(to_seconds(value))
}
pub fn to_hours(value: f64) -> f64 {
super::seconds::to_hours(to_seconds(value))
}
pub fn to_days(value: f64) -> f64 {
super::seconds::to_days(to_seconds(value))
}
pub fn to_weeks(value: f64) -> f64 {
super::seconds::to_weeks(to_seconds(value))
}
pub fn to_years(value: f64) -> f64 {
super::seconds::to_years(to_seconds(value))
}
pub fn to_microseconds(value: f64) -> f64 {
value * 1000.0
}
pub fn to_nanoseconds(value: f64) -> f64 {
value * 1_000_000.0
}
}
pub mod microseconds {
pub fn to_seconds(value: f64) -> f64 {
value / 1_000_000.0
}
pub fn to_minutes(value: f64) -> f64 {
super::seconds::to_minutes(to_seconds(value))
}
pub fn to_hours(value: f64) -> f64 {
super::seconds::to_hours(to_seconds(value))
}
pub fn to_days(value: f64) -> f64 {
super::seconds::to_days(to_seconds(value))
}
pub fn to_weeks(value: f64) -> f64 {
super::seconds::to_weeks(to_seconds(value))
}
pub fn to_years(value: f64) -> f64 {
super::seconds::to_years(to_seconds(value))
}
pub fn to_milliseconds(value: f64) -> f64 {
value / 1000.0
}
pub fn to_nanoseconds(value: f64) -> f64 {
value * 1000.0
}
}
pub mod nanoseconds {
pub fn to_seconds(value: f64) -> f64 {
value / 1_000_000_000.0
}
pub fn to_minutes(value: f64) -> f64 {
super::seconds::to_minutes(to_seconds(value))
}
pub fn to_hours(value: f64) -> f64 {
super::seconds::to_hours(to_seconds(value))
}
pub fn to_days(value: f64) -> f64 {
super::seconds::to_days(to_seconds(value))
}
pub fn to_weeks(value: f64) -> f64 {
super::seconds::to_weeks(to_seconds(value))
}
pub fn to_years(value: f64) -> f64 {
super::seconds::to_years(to_seconds(value))
}
pub fn to_milliseconds(value: f64) -> f64 {
value / 1_000_000.0
}
pub fn to_microseconds(value: f64) -> f64 {
value / 1000.0
}
}
pub fn seconds_to_minutes(seconds: f64) -> f64 {
seconds::to_minutes(seconds)
}
pub fn minutes_to_seconds(minutes: f64) -> f64 {
minutes::to_seconds(minutes)
}
pub fn hours_to_seconds(hours: f64) -> f64 {
hours::to_seconds(hours)
}
pub fn seconds_to_hours(seconds: f64) -> f64 {
seconds::to_hours(seconds)
}
pub fn days_to_hours(days: f64) -> f64 {
days::to_hours(days)
}
pub fn hours_to_days(hours: f64) -> f64 {
hours::to_days(hours)
}
pub fn weeks_to_days(weeks: f64) -> f64 {
weeks::to_days(weeks)
}
pub fn days_to_weeks(days: f64) -> f64 {
days::to_weeks(days)
}
pub fn years_to_days(years: f64) -> f64 {
years::to_days(years)
}
pub fn days_to_years(days: f64) -> f64 {
days::to_years(days)
}
pub fn milliseconds_to_seconds(ms: f64) -> f64 {
milliseconds::to_seconds(ms)
}
pub fn seconds_to_milliseconds(seconds: f64) -> f64 {
seconds::to_milliseconds(seconds)
}
pub fn microseconds_to_seconds(us: f64) -> f64 {
microseconds::to_seconds(us)
}
pub fn seconds_to_microseconds(seconds: f64) -> f64 {
seconds::to_microseconds(seconds)
}
pub fn nanoseconds_to_seconds(ns: f64) -> f64 {
nanoseconds::to_seconds(ns)
}
pub fn seconds_to_nanoseconds(seconds: f64) -> f64 {
seconds::to_nanoseconds(seconds)
}
pub fn convert_time(value: f64, from_unit: &str, to_unit: &str) -> Result<f64, String> {
let from_unit = from_unit.to_lowercase();
let to_unit = to_unit.to_lowercase();
let seconds = match from_unit.as_str() {
"s" | "sec" | "second" | "seconds" => value,
"min" | "minute" | "minutes" => minutes::to_seconds(value),
"h" | "hr" | "hour" | "hours" => hours::to_seconds(value),
"d" | "day" | "days" => days::to_seconds(value),
"w" | "week" | "weeks" => weeks::to_seconds(value),
"y" | "year" | "years" => years::to_seconds(value),
"ms" | "millisecond" | "milliseconds" => milliseconds::to_seconds(value),
"us" | "μs" | "microsecond" | "microseconds" => microseconds::to_seconds(value),
"ns" | "nanosecond" | "nanoseconds" => nanoseconds::to_seconds(value),
_ => return Err(format!("Unsupported time unit: {}", from_unit)),
};
let result = match to_unit.as_str() {
"s" | "sec" | "second" | "seconds" => seconds,
"min" | "minute" | "minutes" => seconds::to_minutes(seconds),
"h" | "hr" | "hour" | "hours" => seconds::to_hours(seconds),
"d" | "day" | "days" => seconds::to_days(seconds),
"w" | "week" | "weeks" => seconds::to_weeks(seconds),
"y" | "year" | "years" => seconds::to_years(seconds),
"ms" | "millisecond" | "milliseconds" => seconds::to_milliseconds(seconds),
"us" | "μs" | "microsecond" | "microseconds" => seconds::to_microseconds(seconds),
"ns" | "nanosecond" | "nanoseconds" => seconds::to_nanoseconds(seconds),
_ => return Err(format!("Unsupported time unit: {}", to_unit)),
};
Ok(result)
}