date -v +10(+10 is the offset from the current time). But when he tried to translate this to Linux, he found that the -v flag from FreeBSD's
dateprogram wasn't available on the GNU
But I suggested he could do the same thing with the TZ environment variable.
It's not documented well anywhere I could find, but if you set TZ to
the name of a time zone,
date will print out the time for
that zone rather than your current one.
So, for bash:
$ TZ=Europe/Paris date # time in Paris $ TZ=GB date # time in Great Britain $ TZ=GMT-02 date # time two timezones east of GMTor for csh:
% ( setenv TZ Europe/Paris; date) % ( setenv TZ GB; date) % ( setenv TZ GMT-02; date)
That's all very well. But when I tried
% ( setenv TZ UK; date) % ( setenv TZ FR; date)they gave the wrong time, even though Wikipedia's list of time zones seemed to indicate that those abbreviations were okay.
The trick seems to be that setting TZ only works for abbreviations in /usr/share/zoneinfo/, or maybe in /usr/share/zoneinfo/posix/. If you give an abbreviation, like UK or FR or America/San_Francisco, it won't give you an error, it'll just print GMT as if that was what you had asked for.
So this trick is useful for printing times abroad -- but if you want to be safe, either stick to syntaxes like GMT-2, or make a script that checks whether your abbreviation exists in the directory before calling date, and warns you rather than just printing the wrong time.
[ 14:04 Jun 18, 2010 More linux/cmdline | permalink to this entry | comments ]