DDIFF(1)

NAME
ddiff - Compute durations between dates and times

SYNOPSIS
dseq [OPTION]... FIRST [[INCREMENT] LAST]

DESCRIPTION
dseq 0.2.7

Generate a sequence of date/times from FIRST to LAST, optionally in steps of INCREMENT (which defaults to `1d').

If LAST is omitted it defaults to `now' if FIRST is a date/time, or `today' if FIRST is a date, or `time' if FIRST is a time.

The values of FIRST and LAST are always inclusive and no date/times before FIRST and no date/times after LAST will be printed.

Negative INCREMENTs must be given, i.e. if FIRST is newer than LAST.

-h, --help
    Print help and exit

-V, --version
    Print version and exit

-q, --quiet
    Suppress message about date/time and duration parser errors.

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

-e, --backslash-escapes
    Enable interpretation of backslash escapes in the output and input format specifier strings.

-s, --skip=STRING
    Skip weekdays specified by STRING. STRING can be a single weekday (Mon, Tue, etc.), and to skip several days the --skip option can be used multiple times. STRING can also be a comma-separated list of weekday names, or `ss' to skip weekends (sat+sun) altogether. STRING can also contain date ranges like `mo-we' for monday to wednesday.

--alt-inc=STRING
    Alternative increment to use when a date is hit that is skipped as per --skip. This increment will be applied until a non-skipped date is reached. The special case `0' (default) deactivates alternative incrementing. A useful value could be `1d' for increasing sequences and `-1d' for decreasing sequences, so if a skipped date is encountered the next non-skipped date after/before will be used.

--compute-from-last
    Compute a start value from LAST using INCREMENT. This option has an effect only when INCREMENT is not a divisor of the duration between FIRST and LAST. In such case, an alternative FIRST will be computed by consecutively subtracting INCREMENT from LAST until FIRST is hit or crossed.

EXAMPLES
  $ dseq 2012-02-01 2012-03-01
  2012-02-01
  2012-02-02
  2012-02-03
  2012-02-04
  2012-02-05
  2012-02-06
  2012-02-07
  2012-02-08
  2012-02-09
  2012-02-10
  2012-02-11
  2012-02-12
  2012-02-13
  2012-02-14
  2012-02-15
  2012-02-16
  2012-02-17
  2012-02-18
  2012-02-19
  2012-02-20
  2012-02-21
  2012-02-22
  2012-02-23
  2012-02-24
  2012-02-25
  2012-02-26
  2012-02-27
  2012-02-28
  2012-02-29
  2012-03-01
  $
  $ dseq 2001-02-03 2001-03-03 --skip sat -f "%F %a"
  2001-02-04 Sun
  2001-02-05 Mon
  2001-02-06 Tue
  2001-02-07 Wed
  2001-02-08 Thu
  2001-02-09 Fri
  2001-02-11 Sun
  2001-02-12 Mon
  2001-02-13 Tue
  2001-02-14 Wed
  2001-02-15 Thu
  2001-02-16 Fri
  2001-02-18 Sun
  2001-02-19 Mon
  2001-02-20 Tue
  2001-02-21 Wed
  2001-02-22 Thu
  2001-02-23 Fri
  2001-02-25 Sun
  2001-02-26 Mon
  2001-02-27 Tue
  2001-02-28 Wed
  2001-03-01 Thu
  2001-03-02 Fri
  $
  $ dseq --compute-from-last 2001-02-03 1 2001-03-03 --skip sat -f "%F %a"
  2001-02-04 Sun
  2001-02-05 Mon
  2001-02-06 Tue
  2001-02-07 Wed
  2001-02-08 Thu
  2001-02-09 Fri
  2001-02-11 Sun
  2001-02-12 Mon
  2001-02-13 Tue
  2001-02-14 Wed
  2001-02-15 Thu
  2001-02-16 Fri
  2001-02-18 Sun
  2001-02-19 Mon
  2001-02-20 Tue
  2001-02-21 Wed
  2001-02-22 Thu
  2001-02-23 Fri
  2001-02-25 Sun
  2001-02-26 Mon
  2001-02-27 Tue
  2001-02-28 Wed
  2001-03-01 Thu
  2001-03-02 Fri
  $
  $ dseq 2001-02-03 3 2001-03-03 --skip sat,fri -f "%F %a"
  2001-02-06 Tue
  2001-02-12 Mon
  2001-02-15 Thu
  2001-02-18 Sun
  2001-02-21 Wed
  2001-02-27 Tue
  $
  $ dseq --compute-from-last 2001-02-03 3 2001-03-03 --skip sat,fri -f "%F %a"
  2001-02-04 Sun
  2001-02-07 Wed
  2001-02-13 Tue
  2001-02-19 Mon
  2001-02-22 Thu
  2001-02-25 Sun
  2001-02-28 Wed
  $
  $ dseq 2001-02-05 4 2001-03-04 -f "%F %a"
  2001-02-05 Mon
  2001-02-09 Fri
  2001-02-13 Tue
  2001-02-17 Sat
  2001-02-21 Wed
  2001-02-25 Sun
  2001-03-01 Thu
  $
  $ dseq --compute-from-last 2001-02-05 4 2001-03-04 -f "%F %a"
  2001-02-08 Thu
  2001-02-12 Mon
  2001-02-16 Fri
  2001-02-20 Tue
  2001-02-24 Sat
  2001-02-28 Wed
  2001-03-04 Sun
  $
  $ dseq --alt-inc 1d 2001-02-03 3 2001-03-03 --skip sat,fri -f "%F %a"
  2001-02-04 Sun
  2001-02-07 Wed
  2001-02-11 Sun
  2001-02-14 Wed
  2001-02-18 Sun
  2001-02-21 Wed
  2001-02-25 Sun
  2001-02-28 Wed
  $
  $ dseq --compute-from-last --alt-inc 1d 2001-02-03 3 2001-03-03 --skip sat,fri -f "%F %a"
  2001-02-04 Sun
  2001-02-07 Wed
  2001-02-11 Sun
  2001-02-14 Wed
  2001-02-18 Sun
  2001-02-21 Wed
  2001-02-25 Sun
  2001-02-28 Wed
  $
  $ dseq 2001-01-01 2d 2001-01-08
  2001-01-01
  2001-01-03
  2001-01-05
  2001-01-07
  $
  $ dseq --compute-from-last 2001-01-01 2d 2001-01-08
  2001-01-02
  2001-01-04
  2001-01-06
  2001-01-08
  $
  $ dseq 2001-01-08 -2d 2001-01-01
  2001-01-08
  2001-01-06
  2001-01-04
  2001-01-02
  $
  $ dseq --compute-from-last 2001-01-08 -2d 2001-01-01
  2001-01-07
  2001-01-05
  2001-01-03
  2001-01-01
  $
  $ dseq 10:00:00 12m 11:20:00
  10:00:00
  10:12:00
  10:24:00
  10:36:00
  10:48:00
  11:00:00
  11:12:00
  $
  $ dseq --compute-from-last 10:00:00 12m 11:20:00
  10:08:00
  10:20:00
  10:32:00
  10:44:00
  10:56:00
  11:08:00
  11:20:00
  $
  $ dseq 11:20:00 -12m 10:00:00
  11:20:00
  11:08:00
  10:56:00
  10:44:00
  10:32:00
  10:20:00
  10:08:00
  $
  $ dseq --compute-from-last 11:20:00 -12m 10:00:00
  11:12:00
  11:00:00
  10:48:00
  10:36:00
  10:24:00
  10:12:00
  10:00:00
  $

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)
  %j Equivalent to %D
  %m The month in the current calendar (range 00 to 19)
  %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, first day of week is Sun (range 00 to 53)
  %V The ISO week count, first 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, first 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
  %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 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
  th Suffix, read and print ordinal numbers
  b Suffix, treat days as business days By design dates before 1601-01-01 are not supported. For conformity here is a list of calendar spec names and their meaning:
  ymd %Y-%m-%d
  ymcw %Y-%m-%c-%w
  ywd %rY-W%V-%u
  bizda %Y-%m-%db

SPECIFYING DURATIONS
Some tools ("dadd", "dseq") need durations as their input. Durations are generally incompatible with input formats as specified by "-i|--input-format" and (at the moment) the input syntax is fixed. The general format is "[+-]Nunit" where "+" or "-" is the sign, "N" a number, and "unit" the unit as discussed below. Units:
  s seconds
  m minutes
  h hours
  rs real-life seconds, as in including leap second transitions
  d days
  b business days
  mo months
  y years

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 ddiff is maintained as a Texinfo manual. If the info and ddiff programs are properly installed at your site, the command

    info (dateutils)dseq

should give you access to the complete manual.