#!/bin/bash

declare -A periods
rec=0

read -r args
set -- $args
for arg
do
    echo "arg: $arg"

    day= month= year=

    case $arg in
      */*/* | *-*-*)
          read -r year month day < <(date '+%Y %m %d' -d "$arg")
          ;;
      ????[-/]?? | ????[-/]?)
          IFS='-/' read -r year month <<< "$arg"
          ;;
      ??[-/]???? | ?[-/]????)
          IFS='-/' read -r month year <<< "$arg"
          ;;
    esac

    periods[$rec,year]="$year"
    periods[$rec,month]="$month"
    periods[$rec,day]="$day"
    ((rec++))
done

declare -p periods

# display
for ((i=0; i<rec; i++))
do 
    echo "year: ${periods[$i,year]} / month: ${periods[$i,month]} / day: ${periods[$i,day]}"
done
