parse_datetime

Crates.io License CodeCov

A Rust crate for parsing human-readable relative time strings and converting them to a Duration, or parsing human-readable datetime strings and converting them to a DateTime.

Features

Usage

Add this to your Cargo.toml:

toml [dependencies] parse_datetime = "0.4.0"

Then, import the crate and use the from_str and from_str_at_date functions: ```rs use parsedatetime::{fromstr, fromstrat_date}; use chrono::Duration;

let duration = fromstr("+3 days"); asserteq!(duration.unwrap(), Duration::days(3));

let today = Utc::today().naiveutc(); let yesterday = today - Duration::days(1); asserteq!( fromstrat_date(yesterday, "2 days").unwrap(), Duration::days(1) ); ```

For DateTime parsing, import the parse_datetime module: ```rs use parsedatetime::parsedatetime::from_str; use chrono::{Local, TimeZone};

let dt = fromstr("2021-02-14 06:37:47"); asserteq!(dt.unwrap(), Local.withymdand_hms(2021, 2, 14, 6, 37, 47).unwrap()); ```

Supported Formats

The from_str and from_str_at_date functions support the following formats for relative time:

num can be a positive or negative integer. unit can be one of the following: "fortnight", "week", "day", "hour", "minute", "min", "second", "sec" and their plural forms.

Return Values

Duration

The from_str and from_str_at_date functions return:

This function will return Err(ParseDurationError::InvalidInput) if the input string cannot be parsed as a relative time.

parse_datetime

The from_str function returns:

Fuzzer

To run the fuzzer: $ cargo fuzz run fuzz_from_str

License

This project is licensed under the MIT License.

Note

At some point, this crate was called humantimetoduration. It has been renamed to cover more cases.