uutils/parse_datetime là một trong những repo mã nguồn mở mà TopGit theo dõi, hiện có 37 sao, viết chủ yếu bằng Rust. Parses a relative time string and returns a jiff::Zoned object
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
A Rust crate for parsing human-readable relative time strings and
human-readable datetime strings.
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 2 hours ago").
Calculate durations relative to a specified date.
Relies on Jiff
Usage
Add parse_datetime to your Cargo.toml with:
cargo add parse_datetime
Then, import the crate and use the parse_datetime_at_date function:
use jiff::{ToSpan, Zoned};
use parse_datetime::{parse_datetime_at_date, ParsedDateTime};
let now = Zoned::now();
let after = parse_datetime_at_date(now.clone(), "+3 days");
match after.unwrap() {
ParsedDateTime::InRange(z) => assert_eq!(now.checked_add(3.days()).unwrap(), z),
ParsedDateTime::Extended(_) => unreachable!("unexpected for this input"),
}
For DateTime parsing, import the parse_datetime function:
use jiff::{civil::{date, time} ,Zoned};
use parse_datetime::{parse_datetime, ParsedDateTime};
let dt = parse_datetime("2021-02-14 06:37:47");
match dt.unwrap() {
ParsedDateTime::InRange(z) => assert_eq!(z, Zoned::now().with().date(date(2021, 2, 14)).time(time(6, 37, 47, 0)).build().unwrap()),
ParsedDateTime::Extended(_) => unreachable!("unexpected for this input"),
}
For years beyond jiff's representable range (e.g., year 10000+), the result is an ExtendedDateTime:
use parse_datetime::{parse_datetime, ParsedDateTime};
let dt = parse_datetime("12000-01-01").unwrap();
match dt {
ParsedDateTime::Extended(ext) => {
assert_eq!(ext.year, 12000);
assert_eq!(ext.month, 1);
assert_eq!(ext.day, 1);
}
ParsedDateTime::InRange(_) => unreachable!("year 12000 is out of jiff range"),
}
Supported Formats
The parse_datetime and parse_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" with unit (e.g., "next week", "last year")
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
The parse_datetime and parse_datetime_at_date function return:
Ok(ParsedDateTime) - If the input string can be parsed
ParsedDateTime::InRange(Zoned) for years supported by jiff::Zoned
ParsedDateTime::Extended(ExtendedDateTime) for out-of-range years (for example >9999)
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 the MIT License.
Note
At some point, this crate was called humantime_to_duration.
It has been renamed to cover more cases.
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/uutils/parse_datetime là nguồn chính thức.
uutils/parse_datetime có phải mã nguồn mở không?
Có — uutils/parse_datetime phát hành theo license MIT, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/uutils/parse_datetime.
uutils/parse_datetime là gì?
uutils/parse_datetime (uutils/parse_datetime) là dự án Rust trên GitHub. Theo mô tả gốc: Parses a relative time string and returns a jiff::Zoned object
Đọc đầy đủ README ở tab phía trên.
Muốn nghe thêm một ý kiến về parse_datetime?
Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về parse_datetime.