Date functions: random_date


random_date() #@ Return random date in given range of years
{             #@ USAGE: random_date FIRST LAST [VAR]
              #@ Global variables set: random_date [VAR]
  local year month day dim first=${1:-1752} last=${2:-2100} var=$3
  year=$(( RANDOM % (last-first) + first ))
  month=$(( RANDOM % 12 + 1 ))
  days_in_month dim "$month" "$year"
  day=$(( RANDOM % dim + 1 ))
  printf -v random_date "%d-%02d-%02d" "$year" "$month" "$day"
  is_var "$var" &&
    printf -v "$var" %s "$random_date" ||
      printf "%s\n" "$random_date"
}