| Crates.io | temps |
| lib.rs | temps |
| version | 2.0.1 |
| created_at | 2022-11-20 21:29:47.454029+00 |
| updated_at | 2025-07-24 20:15:55.071159+00 |
| description | temps is a library for working with time and dates in Rust |
| homepage | |
| repository | https://github.com/icepuma/temps |
| max_upload_size | |
| id | 719414 |
| size | 25,840 |
temps or [tã] is a library for working with time and dates in Rust. Parse human-readable time expressions.
use temps::chrono::{parse_to_datetime, Language};
// English
let dt = parse_to_datetime("in 3 hours", Language::English)?;
let dt = parse_to_datetime("5 minutes ago", Language::English)?;
let dt = parse_to_datetime("tomorrow", Language::English)?;
let dt = parse_to_datetime("next monday", Language::English)?;
let dt = parse_to_datetime("2024-12-25T15:30:00Z", Language::English)?;
// German
let dt = parse_to_datetime("in 3 Stunden", Language::German)?;
let dt = parse_to_datetime("vor 5 Minuten", Language::German)?;
let dt = parse_to_datetime("morgen", Language::German)?;
let dt = parse_to_datetime("nächsten Montag", Language::German)?;
in 2 hours, 3 days ago)today, yesterday, tomorrow)monday, next friday, last wed)3:30 pm, 14:45, 9:00 am)tomorrow at 3:30 pm, next monday at 9:00)15/03/2024, 31-12-2025, 15.03.2024)2024-12-25T15:30:00Z)chrono and jiff[dependencies]
# With chrono
temps = { version = "1.0.0", features = ["chrono"] }
# With jiff
temps = { version = "1.0.0", features = ["jiff"] }
use temps::chrono::{parse_to_datetime, Language};
// Relative times
let meeting = parse_to_datetime("in 2 hours", Language::English)?;
let deadline = parse_to_datetime("in 3 days", Language::English)?;
let reminder = parse_to_datetime("in 30 Minuten", Language::German)?;
// Day references
let today = parse_to_datetime("today", Language::English)?;
let tomorrow = parse_to_datetime("morgen", Language::German)?;
// Weekdays
let next_meeting = parse_to_datetime("next tuesday", Language::English)?;
let last_friday = parse_to_datetime("last friday", Language::English)?;
// Times
let afternoon = parse_to_datetime("3:30 pm", Language::English)?;
let morning = parse_to_datetime("09:00", Language::German)?;
// Combined day and time
let appointment = parse_to_datetime("tomorrow at 2:00 pm", Language::English)?;
let termin = parse_to_datetime("Montag um 15:30", Language::German)?;
// Date formats
let birthday = parse_to_datetime("15/03/2024", Language::English)?;
let holiday = parse_to_datetime("24.12.2024", Language::German)?;
// Absolute times
let christmas = parse_to_datetime("2024-12-25T00:00:00Z", Language::English)?;
Relative times:
in 5 minutes, 2 hours agoin 5 Minuten, vor 2 StundenDay references:
today, yesterday, tomorrowheute, gestern, morgenWeekdays:
monday/mon, tuesday/tue, etc.next monday, last fridayMontag/mo, Dienstag/di, etc.nächsten Montag, letzten FreitagTime formats:
3:30 pm, 10:15 am, 14:3014:30, 9:45 UhrCombined day and time:
tomorrow at 3:30 pm, next monday at 9:00 ammorgen um 14:30, nächsten Montag um 21:00 UhrDate formats:
15/03/2024, 31-12-2025 (DD/MM/YYYY or DD-MM-YYYY)15.03.2024 (DD.MM.YYYY)Special keywords:
nowjetztISO 8601: 2024-01-15T10:30:00Z
Time units: seconds, minutes, hours, days, weeks, months, years
// Direct parser access
use temps_core::{parse, Language, TimeExpression};
let (_, expr) = parse("in 3 hours", Language::English)?;
match expr {
TimeExpression::Relative(rel) => println!("{} {} {:?}", rel.amount, rel.unit, rel.direction),
TimeExpression::Absolute(abs) => println!("ISO: {}", abs.time),
TimeExpression::Now => println!("Right now!"),
TimeExpression::Day(day) => println!("Day reference: {:?}", day),
TimeExpression::Time(time) => println!("Time: {:02}:{:02}", time.hour, time.minute),
TimeExpression::DayTime(dt) => println!("Day + time: {:?} at {:02}:{:02}", dt.day, dt.time.hour, dt.time.minute),
TimeExpression::Date(date) => println!("Date: {:02}/{:02}/{:04}", date.day, date.month, date.year),
}
Licensed under either of
at your option.