DATECONV(1)

πŸ“¦
version 0.4.11 Β· 5 versions
, in ubuntu resolute, ubuntu stonking

πŸ’– DATECONV(1) β€” the dateutils glow-up πŸ’–

okay bestie, listen. this is dateconv, a User Commands girlie from the dateutils fam, and she converts DATE/TIMEs between calendrical systems. no cap. that's the whole personality. let's go πŸ¦‹


✨ NAME ✨

dateconv β€” Convert DATE/TIMEs between calendrical systems. πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

dateconv [OPTION]...  [DATE/TIME]...

🌸 DESCRIPTION 🌸

She converts DATE/TIMEs between calendrical systems, periodt. And if you just… don't give her a DATE/TIME? No worries! She reads date/times from stdin instead. main character energy tbh 🫢

DATE/TIME can also be one of these little specials, they're iconic:

  • 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) 😭

Recognized OPTIONs (yes, she has options, she's booked and busy):

  • -h, --help β€” Print help and exit πŸ™‹
  • -V, --version β€” Print version and exit
  • -q, --quiet β€” Suppress message about date/time and duration parser errors and fix-ups. The default is to print a warning or the fixed up value and return error code 2. (so if you want the receipts, don't pass this bestie)
  • -f, --format=STRING β€” Output format. This can either be a specifier string (similar to strftime()'s FMT) or the name of a calendar.
  • -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.
  • -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.
  • -e, --backslash-escapes β€” Enable interpretation of backslash escapes in the output and input format specifier strings.
  • -S, --sed-mode β€” Copy parts from the input before and after a matching date/time. Note that all occurrences of date/times within a line will be processed.
  • -E, --empty-mode β€” Empty lines that cannot be parsed.
  • --locale=LOCALE β€” Format results according to LOCALE, this would only affect month and weekday names.
  • --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. 🌍
  • -z, --zone=ZONE β€” Convert dates printed on stdout to time zone ZONE, default: UTC.

🧚 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. (she contains multitudes, okay?)

πŸ—“οΈ 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)

and then the roman numeral girlies πŸ‘‘

  • %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

and the epoch / calendar-year specials:

  • %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.

ordinal era πŸ’…:

  • %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.

and the business day besties:

  • %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 second (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. 😭 she said no.

For conformity here is a list of calendar designators and their corresponding format string β€” she's an open book fr fr:

  • 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 πŸ”₯

look at her go, she ate:

$ dateconv 2012-03-01
2012-03-01
$

$ dateconv -i "%d/%b/%y" 01/Mar/12
2012-03-01
$

$ dateconv -f "%d/%b/%y" 2012-03-01
01/Mar/12
$

$ dateconv -f "%d/%b/%y" -i "%OY %Om %Od" "MCMXCVIII IX XVII"
17/Sep/98
$

$ dateconv 12:03:01
12:03:01
$

$ dateconv -i "%I:%M:%S %p" "11:22:33 PM"
23:22:33
$

$ dateconv '2012-03-01 00:00:00'
2012-03-01T00:00:00
$

$ dateconv 2012-03-01T12:34:56
2012-03-01T12:34:56
$

$ dateconv --zone America/Chicago <<EOF
2012-03-01T07:05:06
2012-03-01T08:12:34
2012-03-11T01:05:06
2012-03-11T02:05:06
2012-03-11T07:05:06
2012-03-11T08:05:06
2012-03-11T17:05:06
EOF
2012-03-01T01:05:06
2012-03-01T02:12:34
2012-03-10T19:05:06
2012-03-10T20:05:06
2012-03-11T01:05:06
2012-03-11T03:05:06
2012-03-11T12:05:06
$

$ dateconv --from-zone America/Chicago <<EOF
2012-03-01T01:05:06
2012-03-01T02:12:34
2012-03-10T19:05:06
2012-03-10T20:05:06
2012-03-11T01:05:06
2012-03-11T03:05:06
2012-03-11T12:05:06
EOF
2012-03-01T07:05:06
2012-03-01T08:12:34
2012-03-11T01:05:06
2012-03-11T02:05:06
2012-03-11T07:05:06
2012-03-11T08:05:06
2012-03-11T17:05:06
$

$ dateconv --from-zone America/Chicago -z Europe/Berlin '2012-03-01 12:00' -i '%F %H:%M' -f '%F %T'
2012-03-01 19:00:00
$

πŸ‘‘ AUTHOR πŸ‘‘

Written by Sebastian Freundt <freundt@fresse.org> β€” we love a legend πŸ’œ


πŸ› REPORTING BUGS πŸ›

Found a bug? bestie pls report it here, she wants to know:

https://github.com/hroptatyr/dateutils/issues


πŸ‘€ SEE ALSO πŸ‘€

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

info (dateutils)dateconv

should give you access to the complete manual. iykyk 🧚


that's the whole page bestie, slay πŸ’… this was dateutils version 0.4.11, dated November 2025. go convert some dates, you got this 🫢✨

πŸ“¦ where this page comes from