Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Parses a relative time string and returns a `Duration`

License

NotificationsYou must be signed in to change notification settings

uutils/parse_datetime

Repository files navigation

Crates.ioLicenseCodeCov

A Rust crate for parsing human-readable relative time strings and human-readable datetime strings and converting them to aDateTime.

Features

  • Parses a variety of human-readable and standard time formats.
  • Supports positive and negative durations.
  • Allows for chaining time units (e.g., "1 hour 2 minutes" or "2 days and 2 hours").
  • Calculate durations relative to a specified date.
  • Relies on Chrono

Usage

Addparse_datetime to yourCargo.toml with:

cargo add parse_datetime

Then, import the crate and use theparse_datetime_at_date function:

use chrono::{Duration,Local};use parse_datetime::parse_datetime_at_date;let now =Local::now();let after =parse_datetime_at_date(now,"+3 days");assert_eq!((now +Duration::days(3)).naive_utc(),  after.unwrap().naive_utc());

For DateTime parsing, import theparse_datetime function:

use parse_datetime::parse_datetime;use chrono::{Local,TimeZone};let dt =parse_datetime("2021-02-14 06:37:47");assert_eq!(dt.unwrap(),Local.with_ymd_and_hms(2021,2,14,6,37,47).unwrap());

Supported Formats

Theparse_datetime andparse_datetime_at_date functions support absolute datetime and the following relative times:

  • numunit (e.g., "-1 hour", "+3 days")
  • unit (e.g., "hour", "day")
  • "now" or "today"
  • "yesterday"
  • "tomorrow"
  • use "ago" for the past
  • use "next" or "last" withunit (e.g., "next week", "last year")
  • combined units with "and" or "," (e.g., "2 years and 1 month", "1 day, 2 hours" or "2 weeks 1 second")
  • unix timestamps (for example "@0" "@1344000")

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

parse_datetime and parse_datetime_at_date

Theparse_datetime andparse_datetime_at_date function return:

  • Ok(DateTime<FixedOffset>) - If the input string can be parsed as a datetime
  • Err(ParseDateTimeError::InvalidInput) - If the input string cannot be parsed

Fuzzer

To run the fuzzer:

$ cd fuzz$ cargo install cargo-fuzz$ cargo +nightly fuzz run fuzz_parse_datetime

License

This project is licensed under theMIT License.

Note

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

About

Parses a relative time string and returns a `Duration`

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors20

Languages


[8]ページ先頭

©2009-2025 Movatter.jp