DATEZONE(1)

🌸 NAME 🌸

okay bestie, welcome to DATEZONE(1) from the User Commands manual. The command is datezone, and its whole main-character job is: Convert DATE/TIMEs between timezones. ✨

πŸ¦‹ SYNOPSIS πŸ¦‹

datezone [OPTION]...  [ZONENAME]... [DATE/TIME]...

πŸ’… DESCRIPTION πŸ’…

Convert DATE/TIMEs between timezones. If DATE/TIME is omitted, it defaults to now. 🫢

DATE/TIME can also be one of these specials:

  • now β€” interpreted as the current (UTC) time stamp
  • time β€” the time part of the current (UTC) time stamp
  • today β€” the current date (according to UTC)
  • tomo[rrow] β€” tomorrow's date (according to UTC)
  • y[ester]day β€” yesterday's date (according to UTC)

When DATE/TIME is a date (i.e. the time component is omitted) the result will show the timezone offset at the end of that day. πŸŒ™

When DATE/TIME is a time (i.e. the date component is omitted) the conversion takes place on the date as specified by --base|-b, by default the current date. ⏰

Recognized OPTIONs:

✨ OPTIONS ✨

  • -h, --help β€” display this help and exit
  • -V, --version β€” output version information and exit
  • -q, --quiet β€” Suppress message about date/time or zonename parser errors and fix-ups. The default is to print a warning or the fixed up value and return error code 2.
  • -b, --base=DT β€” For underspecified input use DT as a fallback to fill in missing fields. Also used for ambiguous format specifiers to position their range on the absolute time line. Must be a date/time in ISO8601 format. If omitted defaults to the current date/time.
  • -i, --input-format=STRING... β€” Input format, can be used multiple times. Each date/time will be passed to the input format parsers in the order they are given, if a date/time can be read successfully with a given input format specifier string, that value will be used.
  • --from-locale=LOCALE β€” Interpret dates on stdin or the command line as coming from the locale LOCALE, this would only affect month and weekday names as input formats have to be specified explicitly.
  • --from-zone=ZONE β€” Interpret dates on stdin or the command line as coming from the time zone ZONE.
  • --next β€” Show next transition from/to DST.
  • --prev β€” Show previous transition from/to DST.

πŸŽ€ FORMAT SPECS πŸŽ€

Format specs in dateutils are similar to posix' strftime(). πŸ’–

However, due to a broader range of supported calendars dateutils must employ different rules.

🌟 Date specs

  • %a β€” The abbreviated weekday name
  • %A β€” The full weekday name
  • %_a β€” The weekday name shortened to a single character (MTWRFAS)
  • %b β€” The abbreviated month name
  • %B β€” The full month name
  • %_b β€” The month name shortened to a single character (FGHJKMNQUVXZ)
  • %c β€” The count of the weekday within the month (range 00 to 05)
  • %C β€” The count of the weekday within the year (range 00 to 53)
  • %d β€” The day of the month, 2 digits (range 00 to 31)
  • %D β€” The day of the year, 3 digits (range 000 to 366)
  • %F β€” Equivalent to %Y-%m-%d (ymd's canonical format)
  • %g β€” ISO week date year without the century (range 00 to 99)
  • %G β€” ISO week date year including the century
  • %j β€” Equivalent to %D
  • %m β€” The month in the current calendar (range 00 to 12)
  • %Q β€” The quarter of the year (range Q1 to Q4)
  • %q β€” The number of the quarter (range 01 to 04)
  • %s β€” The number of seconds since the Epoch.
  • %u β€” The weekday as number (range 01 to 07, Sunday being 07)
  • %U β€” The week count, day of week is Sun (range 00 to 53)
  • %V β€” The ISO week count, day of week is Mon (range 01 to 53)
  • %w β€” The weekday as number (range 00 to 06, Sunday being 00)
  • %W β€” The week count, day of week is Mon (range 00 to 53)
  • %y β€” The year without a century (range 00 to 99)
  • %Y β€” The year including the century
  • %_y β€” The year shortened to a single digit
  • %Z β€” The zone offset in hours and minutes (HH:MM) with a preceding sign (+ for offsets east of UTC, - for offsets west of UTC)

Roman numeral era, literally iconic πŸ‘‘:

  • %Od β€” The day as roman numerals
  • %Om β€” The month as roman numerals
  • %Oy β€” The two digit year as roman numerals
  • %OY β€” The year including the century as roman numerals
  • %rs β€” In time systems whose Epoch is different from the unix Epoch, this selects the number of seconds since then.
  • %rY β€” In calendars with years that don't coincide with the Gregorian years, this selects the calendar's year.
  • %dth β€” The day of the month as an ordinal number, 1st, 2nd, 3rd, etc.
  • %mth β€” The month of the year as an ordinal number, 1st, 2nd, 3rd, etc.
  • %db β€” The business day of the month (since last month's ultimo)
  • %dB β€” Number of business days until this month's ultimo

⏰ Time specs

  • %H β€” The hour of the day using a 24h clock, 2 digits (range 00 to 23)
  • %I β€” The hour of the day using a 12h clock, 2 digits (range 01 to 12)
  • %M β€” The minute (range 00 to 59)
  • %N β€” The nanoseconds (range 000000000 to 999999999)
  • %p β€” The string AM or PM, noon is PM and midnight is AM.
  • %P β€” Like %p but in lowercase
  • %S β€” The (range 00 to 60, 60 is for leap seconds)
  • %T β€” Equivalent to %H:%M:%S

🌈 General specs

  • %n β€” A newline character
  • %t β€” A tab character
  • %% β€” A literal % character

πŸ’« Modifiers

  • %O β€” Modifier to turn decimal numbers into Roman numerals
  • %r β€” Modifier to turn units into real units
  • %0 β€” Modifier to turn on zero prefixes
  • %SPC β€” Modifier to turn on space prefixes
  • %- β€” Modifier to turn off prefixes altogether
  • th β€” Suffix, read and print ordinal numbers
  • b β€” Suffix, treat days as business days
⚠️ By design dates before 1601-01-01 are not supported. no cap, that's just the rule πŸ’€

For conformity here is a list of calendar designators and their corresponding format string:

πŸ—“οΈ Calendar designators

  • ymd β€” %Y-%m-%d
  • ymcw β€” %Y-%m-%c-%w
  • ywd β€” %rY-W%V-%u
  • bizda β€” %Y-%m-%db
  • lilian β€” n/a
  • ldn β€” n/a
  • julian β€” n/a
  • jdn β€” n/a
  • matlab β€” n/a
  • mdn β€” n/a

These designators can be used as output format string, moreover, @code{lilian}/@code{ldn} and @code{julian}/@code{jdn} can also be used as input format string.

πŸ”₯ EXAMPLES πŸ”₯

$ dzone 2012-03-04T12:04:11
2012-03-04T12:04:11+00:00
$

$ dzone Europe/Berlin 2012-03-04T12:04:11
2012-03-04T13:04:11+01:00     Europe/Berlin
$

$ dzone 2012-03-04T12:04:11 UTC
2012-03-04T12:04:11+00:00     UTC
$

$ dzone Europe/Berlin Australia/Sydney 2012-01-01T14:04:00 2012-05-14T12:04:00
2012-01-01T15:04:00+01:00     Europe/Berlin
2012-01-02T01:04:00+11:00     Australia/Sydney
2012-05-14T14:04:00+02:00     Europe/Berlin
2012-05-14T22:04:00+10:00     Australia/Sydney
$

πŸ‘‘ AUTHOR πŸ‘‘

Written by Sebastian Freundt <freundt@fresse.org>. πŸ’Œ

πŸ› REPORTING BUGS πŸ›

Report bugs to: https://github.com/hroptatyr/dateutils/issues

πŸ’– SEE ALSO πŸ’–

The full documentation for datezone is maintained as a Texinfo manual. If the info and datezone programs are properly installed at your site, the command

info (dateutils)datezone

should give you access to the complete manual. 🫢


that's the whole tea, bestie: dateutils 0.4.11, January 2024, manual tag DATEZONE(1). mwah πŸ’‹