emulate -L zsh setopt extendedglob zmodload -i zsh/datetime local optm datefmt opt integer optr replyset zstyle -s ':datetime:calendar_showdate:' date-format datefmt || datefmt="%a %b %d %H:%M:%S %Z %Y" while [[ $argv[$OPTIND] != +* ]] && getopts "r" opt; do case $opt in (r) REPLY=0 optr=1 ;; esac done shift $(( OPTIND - 1 )) (( optr )) || local REPLY if (( ! $# )); then print "Usage: $0 datespec [ ... ]" >&2 return 1 fi while (( $# )); do optm= if [[ $1 = [-+]* ]]; then # relative [[ $1 = -* ]] && optm=-m 1=${1[2,-1]} # if this is the first argument, use current time # don't make assumptions about type of reply in case global if (( ! replyset )); then REPLY=$EPOCHSECONDS replyset=1 fi fi if (( replyset )); then calendar_scandate $optm -R $REPLY -aA $1 || return 1 replyset=1 else calendar_scandate -aA $1 || return 1 fi shift done (( optr )) && return strftime $datefmt $REPLY