New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
allow parsing of human readable datetimes #11051
Conversation
You know my spiel about being highly suspect of new dependencies.
|
I'm not too worried about it. I added it because people have asked for something like this in discord and it was an easy add. There's a pest grammar that the crate uses, so if we wanted to, we could better specify what is supported. I just took whatever was on their readme.md as a hint to tell the users what it supports when using --list-human. i18n isn't on the top of our list at the moment, but when that day comes, we can find a better crate or perhaps drop the functionality. For now, I'd rather live with it to see how it sits with people. Yet another thing telemetry would be good for, determining what is used most and least. |
# Description This PR adds the ability to parse human readable datetime strings as part of the `into datetime` command. I added a new `-n`/`--list-human` parameter that produces this list to give the user an idea of what is supported. ```nushell ❯ into datetime --list-human ╭#─┬parseable human datetime examples┬───result───╮ │0 │Today 18:30 │in 8 hours │ │1 │2022-11-07 13:25:30 │a year ago │ │2 │15:20 Friday │in 3 days │ │3 │This Friday 17:00 │in 3 days │ │4 │13:25, Next Tuesday │in a week │ │5 │Last Friday at 19:45 │3 days ago │ │6 │In 3 days │in 2 days │ │7 │In 2 hours │in 2 hours │ │8 │10 hours and 5 minutes ago │10 hours ago│ │9 │1 years ago │a year ago │ │10│A year ago │a year ago │ │11│A month ago │a month ago │ │12│A week ago │a week ago │ │13│A day ago │a day ago │ │14│An hour ago │an hour ago │ │15│A minute ago │a minute ago│ │16│A second ago │now │ │17│Now │now │ ╰#─┴parseable human datetime examples┴───result───╯ ``` Or with `$env.config.datetime_format.table` set. ```nushell ❯ into datetime --list-human ╭#─┬parseable human datetime examples┬──────result───────╮ │0 │Today 18:30 │11/14/23 06:30:00PM│ │1 │2022-11-07 13:25:30 │11/07/22 01:25:30PM│ │2 │15:20 Friday │11/17/23 03:20:00PM│ │3 │This Friday 17:00 │11/17/23 05:00:00PM│ │4 │13:25, Next Tuesday │11/21/23 01:25:00PM│ │5 │Last Friday at 19:45 │11/10/23 07:45:00PM│ │6 │In 3 days │11/17/23 10:12:54AM│ │7 │In 2 hours │11/14/23 12:12:54PM│ │8 │10 hours and 5 minutes ago │11/14/23 12:07:54AM│ │9 │1 years ago │11/13/22 10:12:54AM│ │10│A year ago │11/13/22 10:12:54AM│ │11│A month ago │10/15/23 11:12:54AM│ │12│A week ago │11/07/23 10:12:54AM│ │13│A day ago │11/13/23 10:12:54AM│ │14│An hour ago │11/14/23 09:12:54AM│ │15│A minute ago │11/14/23 10:11:54AM│ │16│A second ago │11/14/23 10:12:53AM│ │17│Now │11/14/23 10:12:54AM│ ╰#─┴parseable human datetime examples┴──────result───────╯ ``` # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass (on Windows make sure to [enable developer mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging)) - `cargo run -- -c "use std testing; testing run-tests --path crates/nu-std"` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
# Description This PR adds the ability to parse human readable datetime strings as part of the `into datetime` command. I added a new `-n`/`--list-human` parameter that produces this list to give the user an idea of what is supported. ```nushell ❯ into datetime --list-human ╭#─┬parseable human datetime examples┬───result───╮ │0 │Today 18:30 │in 8 hours │ │1 │2022-11-07 13:25:30 │a year ago │ │2 │15:20 Friday │in 3 days │ │3 │This Friday 17:00 │in 3 days │ │4 │13:25, Next Tuesday │in a week │ │5 │Last Friday at 19:45 │3 days ago │ │6 │In 3 days │in 2 days │ │7 │In 2 hours │in 2 hours │ │8 │10 hours and 5 minutes ago │10 hours ago│ │9 │1 years ago │a year ago │ │10│A year ago │a year ago │ │11│A month ago │a month ago │ │12│A week ago │a week ago │ │13│A day ago │a day ago │ │14│An hour ago │an hour ago │ │15│A minute ago │a minute ago│ │16│A second ago │now │ │17│Now │now │ ╰#─┴parseable human datetime examples┴───result───╯ ``` Or with `$env.config.datetime_format.table` set. ```nushell ❯ into datetime --list-human ╭#─┬parseable human datetime examples┬──────result───────╮ │0 │Today 18:30 │11/14/23 06:30:00PM│ │1 │2022-11-07 13:25:30 │11/07/22 01:25:30PM│ │2 │15:20 Friday │11/17/23 03:20:00PM│ │3 │This Friday 17:00 │11/17/23 05:00:00PM│ │4 │13:25, Next Tuesday │11/21/23 01:25:00PM│ │5 │Last Friday at 19:45 │11/10/23 07:45:00PM│ │6 │In 3 days │11/17/23 10:12:54AM│ │7 │In 2 hours │11/14/23 12:12:54PM│ │8 │10 hours and 5 minutes ago │11/14/23 12:07:54AM│ │9 │1 years ago │11/13/22 10:12:54AM│ │10│A year ago │11/13/22 10:12:54AM│ │11│A month ago │10/15/23 11:12:54AM│ │12│A week ago │11/07/23 10:12:54AM│ │13│A day ago │11/13/23 10:12:54AM│ │14│An hour ago │11/14/23 09:12:54AM│ │15│A minute ago │11/14/23 10:11:54AM│ │16│A second ago │11/14/23 10:12:53AM│ │17│Now │11/14/23 10:12:54AM│ ╰#─┴parseable human datetime examples┴──────result───────╯ ``` # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass (on Windows make sure to [enable developer mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging)) - `cargo run -- -c "use std testing; testing run-tests --path crates/nu-std"` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
Description
This PR adds the ability to parse human readable datetime strings as part of the
into datetime
command. I added a new-n
/--list-human
parameter that produces this list to give the user an idea of what is supported.Or with
$env.config.datetime_format.table
set.User-Facing Changes
Tests + Formatting
After Submitting