#!/bin/sh # DATE From To while getopts cfF:t:T: opt; do case $opt in c) tz_from="Asia/Shanghai";; f) tz_from="$(tzselect)";; F) tz_from="$OPTARG";; # one extra ',' at the end will not let `for tz in ...` loop one extra time? t) for i in $(seq "$OPTARG"); do tz_to="$(tzselect),$tz_to" done;; T) tz_to="$OPTARG,$tz_to";; \?) exit 1;; esac done shift $((OPTIND-1)) time_from="TZ=\"${tz_from:-$(readlink /etc/localtime | sed 's#.*/\(.*/.*\)$#\1#')}\" ${1:-now}" date -d "$time_from" TZ="Asia/Shanghai" date -d "$time_from" date -d "$time_from" -u date -d "$time_from" +%s [ "$tz_from" ] && [ "$tz_from" != "Asia/Shanghai" ] && TZ="$tz_from" date -d "$time_from" IFS=',' for tz in $tz_to; do TZ="$tz" date -d "$time_from" done