#date-parser #date-time #human-time #express #ones #parser-string #chrono #time-string #monday

human-date-parser

Parses strings that express dates in a human way into ones usable by code

6 releases

0.3.1 Mar 27, 2025
0.3.0 Mar 26, 2025
0.2.0 Sep 5, 2024
0.1.2 Apr 4, 2024
0.1.1 Jan 26, 2023

#73 in Date and time

Download history 7051/week @ 2025-12-29 7342/week @ 2026-01-05 8105/week @ 2026-01-12 9304/week @ 2026-01-19 7889/week @ 2026-01-26 8599/week @ 2026-02-02 8249/week @ 2026-02-09 8200/week @ 2026-02-16 7022/week @ 2026-02-23 10093/week @ 2026-03-02 11828/week @ 2026-03-09 7604/week @ 2026-03-16 8108/week @ 2026-03-23 8631/week @ 2026-03-30 8409/week @ 2026-04-06 10225/week @ 2026-04-13

36,224 downloads per month
Used in 30 crates (5 directly)

MIT license

40KB
1K SLoC

Rust 837 SLoC Pest 173 SLoC

Human Date Parser

Parses strings that express dates in a human way into ones usable by code.

Usage

Using it is as simple as calling from_human_time with a string slice and the current date and time. Like this:

use human_date_parser::from_human_time;
use chrono::Local;

fn main() {
    let now = Local::now().naive_local();
    let date = from_human_time("Last Friday at 19:45", now).unwrap();
    println!("{date}");
}

The date and time doesn't have to be 'now' specifically. It's used to figure out what a relative statement like "Next Monday" would actually mean, given the date.

You can also use the example to try out a few dates and see what it can and can't parse. Simply run cargo run --example stdin.

Formats

Currently the following kinds of formats are supported:

  • Today 18:30
  • 2022-11-07 13:25:30
  • 15:20 Friday
  • This Friday 17:00
  • 13:25, Next Tuesday
  • Last Friday at 19:45
  • In 3 days
  • In 2 hours
  • 10 hours and 5 minutes ago
  • 1 years ago
  • A year ago
  • A month ago
  • A week ago
  • A day ago
  • An hour ago
  • A minute ago
  • A second ago
  • Now
  • Yesterday
  • Tomorrow
  • Overmorrow

Issues

If you find issues or opportunities for improvement do let me know by creating a issues on this projects GitHub page.

Dependencies

~2.8–4MB
~70K SLoC