day_of_week() #@ Convert ISO date (YYYY-MM-DD) to day of the week (Sunday = 0)
{ #@ USAGE: day_of_week DATE [shortname|dayname|VAR]
local var dn shortnames=( Sun Mon Tue Wed Thu Fri Sat Sun )
local daynames=( Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday )
shortname= dayname=
is_var "$2" && shift
if ! datenum "$1" dn
then
err 2 "What??? dn=$dn" || return
fi
(( dn > 639785 )) && dn=$(( dn - 3 )) || dn=$(( dn + 6 ))
### Need a method for choosing which of the following to use:
if [[ $_SUNDAY_ == 7 ]]
then
day_of_week=$(( ((dn-1) % 7) + 1 )) ## Sunday = 7
else
day_of_week=$(( dn % 7 )) ## Sunday = 0
fi
[[ $var == shortname ]] && shortname=${shortnames[day_of_week]} && return
[[ $var == dayname ]] && dayname=${daynames[day_of_week]} && return
[[ "$var" ]] && printf -v "$var" %s "$day_of_week" || vshow day_of_week
}