Never thought of it, but not dreadfully hard to do.
#!/bin/sh
# Command-line world clock
: ${WORLDCLOCK_ZONES:=$HOME/etc/worldclock.zones}
: ${WORLDCLOCK_FORMAT:='+%Y-%m-%d %H:%M:%S %Z'}
while read zone
do echo $zone '!' $(TZ=$zone date "$WORLDCLOCK_FORMAT")
done < $WORLDCLOCK_ZONES |
awk -F '!' '{ printf "%-20s %s\n", $1, $2;}'
Given the input file:
US/Pacific
Europe/London
Europe/Paris
Asia/Kolkatta
Africa/Johannesburg
Asia/Tokyo
Asia/Shanghai
I got the output:
US/Pacific 2008-12-15 15:58:57 PST
Europe/London 2008-12-15 23:58:57 GMT
Europe/Paris 2008-12-16 00:58:57 CET
Asia/Kolkatta 2008-12-15 23:58:57 GMT
Africa/Johannesburg 2008-12-16 01:58:57 SAST
Asia/Tokyo 2008-12-16 08:58:57 JST
Asia/Shanghai 2008-12-16 07:58:57 CST
I was fortunate that this took less than a second to run and didn't cross a 1-second boundary.
(I didn't notice that Kolkatta failed and defaulted to GMT. My system still has Asia/Calcutta as the entry for India.)