fromnow
Generate dates and times relative from now.
Usage
fromnow v0.1.1 (semver.org 2.0)
Alberto Leal <mailforalberto@gmail.com> (github.com/dashed)
Generate dates and times relative from now.
USAGE:
fromnow [FLAGS] [OPTIONS] <duration>...
FLAGS:
-h, --help Prints help information
-s, --subtract Subtract time spans/durations to generate date/time in the past.
By default, time
spans/durations are added.
-V, --version Prints version information
OPTIONS:
-f, --format <format>
Format specifier for the combined date and time output.
Example output: July 5, 2016 9:36 PM
Default is: %B
%-d, %Y %-l:%M %p
See: https://lifthrasiir.github.io/rust-chrono/chrono/format/strftime/index.html
ARGS:
<duration>...
A duration/span of time. (Example: 3 hours)
A duration is an integer number followed by time span units. (Example: 42 hours)
There may be whitespace between the integer and the time span unit.
Whitespace between <duration> items is optional (Example: 3hours30mins).
There may be an ' and ' between duration items (Example: 42 days and 42 mins).
Arguments may compose into a valid duration/time span; removing the need to enclose durations in quotes.
Time span units are case-insensitive.
Valid time span units and their abbreviations:
weeks/week/wks/wk/w
days/day/dys/dy/d
hours/hour/hrs/hr/h
minutes/minute/mins/min/m
seconds/second/secs/sec/s
milliseconds/millisecond/msecs/msec/ms
Examples
fromnow 6 hours
fromnow 6 hours 42mins
fromnow 6 hours 42mins 6 week
fromnow 6 hours 42mins 6 week and 9000 secs
fromnow 6 hours 42mins 6 week and 9000 secs -f "%B %-d, %Y %-l:%M %p"
Format Specifiers
Taken from: https://lifthrasiir.github.io/rust-chrono/chrono/format/strftime/index.html
Spec. | Example | Description |
---|
| | **DATE SPECIFIERS:**
%Y
| 2001
| The full proleptic Gregorian year, zero-padded to 4 digits. [1]
%C
| 20
| The proleptic Gregorian year divided by 100, zero-padded to 2 digits. [2]
%y
| 01
| The proleptic Gregorian year modulo 100, zero-padded to 2 digits. [2]
| |
%m
| 07
| Month number (01--12), zero-padded to 2 digits.
%b
| Jul
| Abbreviated month name. Always 3 letters.
%B
| July
| Full month name. Also accepts corresponding abbreviation in parsing.
%h
| Jul
| Same to %b
.
| |
%d
| 08
| Day number (01--31), zero-padded to 2 digits.
%e
| 8
| Same to %d
but space-padded. Same to %_d
.
| |
%a
| Sun
| Abbreviated weekday name. Always 3 letters.
%A
| Sunday
| Full weekday name. Also accepts corresponding abbreviation in parsing.
%w
| 0
| Sunday = 0, Monday = 1, ..., Saturday = 6.
%u
| 7
| Monday = 1, Tuesday = 2, ..., Sunday = 7. (ISO 8601)
| |
%U
| 28
| Week number starting with Sunday (00--53), zero-padded to 2 digits. [3]
%W
| 27
| Same to %U
, but week 1 starts with the first Monday in that year instead.
| |
%G
| 2001
| Same to %Y
but uses the year number in ISO 8601 week date. [4]
%g
| 01
| Same to %y
but uses the year number in ISO 8601 week date. [4]
%V
| 27
| Same to %U
but uses the week number in ISO 8601 week date (01--53). [4]
| |
%j
| 189
| Day of the year (001--366), zero-padded to 3 digits.
| |
%D
| 07/08/01
| Month-day-year format. Same to %m/%d/%y
.
%x
| 07/08/01
| Same to %D
.
%F
| 2001-07-08
| Year-month-day format (ISO 8601). Same to %Y-%m-%d
.
%v
| 8-Jul-2001
| Day-month-year format. Same to %e-%b-%Y
.
| |
| | TIME SPECIFIERS:
%H
| 00
| Hour number (00--23), zero-padded to 2 digits.
%k
| 0
| Same to %H
but space-padded. Same to %_H
.
%I
| 12
| Hour number in 12-hour clocks (01--12), zero-padded to 2 digits.
%l
| 12
| Same to %I
but space-padded. Same to %_I
.
| |
%P
| am
| am
or pm
in 12-hour clocks.
%p
| AM
| AM
or PM
in 12-hour clocks.
| |
%M
| 34
| Minute number (00--59), zero-padded to 2 digits.
%S
| 60
| Second number (00--60), zero-padded to 2 digits. [5]
%f
| 026490000
| The fractional seconds (in nanoseconds) since last whole second. [8]
%.f
| .026490
| Similar to .%f
but left-aligned. [8]
%.3f
| .026
| Similar to .%f
but left-aligned but fixed to a length of 3. [8]
%.6f
| .026490
| Similar to .%f
but left-aligned but fixed to a length of 6. [8]
%.9f
| .026490000
| Similar to .%f
but left-aligned but fixed to a length of 9. [8]
| |
%R
| 00:34
| Hour-minute format. Same to %H:%M
.
%T
| 00:34:60
| Hour-minute-second format. Same to %H:%M:%S
.
%X
| 00:34:60
| Same to %T
.
%r
| 12:34:60 AM
| Hour-minute-second format in 12-hour clocks. Same to %I:%M:%S %p
.
| |
| | TIME ZONE SPECIFIERS:
%Z
| ACST
| Formatting only: Local time zone name.
%z
| +0930
| Offset from the local time to UTC (with UTC being +0000
).
%:z
| +09:30
| Same to %z
but with a colon.
| |
| | DATE & TIME SPECIFIERS:
%c
| Sun Jul 8 00:34:60 2001
| ctime
date & time format. Same to %a %b %e %T %Y
sans \n
.
%+
| 2001-07-08T00:34:60.026490+09:30
| ISO 8601 / RFC 3339 date & time format. [6]
| |
%s
| 994518299
| UNIX timestamp, the number of seconds since 1970-01-01 00:00 UTC. [7]
| |
| | SPECIAL SPECIFIERS:
%t
| | Literal tab (\t
).
%n
| | Literal newline (\n
).
%%
| | Literal percent sign.
Install
Direct downloads are available through the releases page.
If you're on OSX, you may install using Homebrew:
brew install https://raw.githubusercontent.com/dashed/fromnow/master/fromnow.rb
Why?
I'm aware there exists a date
command that does essentially the same thing.
However, there are different flavours of the date
command in OSX and linux. Example:
I created fromnow
for my own usecases rather than making a bash script to 'monkeypatch' the date
command.
License
MIT.