TZ
環境変数を使用して、ローカルタイムが返すタイムゾーンを制御できます。
local $ENV{TZ} = ":/usr/share/lib/zoneinfo/Asia/Tokyo";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime();
print "$sec,$min,$hour,$mday,$mon,$year,$wday,$yday\n"'
# Prints 40,58,4,12,0,111,3,11
local $ENV{TZ} = ":/usr/share/lib/zoneinfo/Europe/London";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime();
print "$sec,$min,$hour,$mday,$mon,$year,$wday,$yday\n"'
# Prints 41,58,19,11,0,111,2,10
/usr/share/lib/zoneinfo
残念ながら、上記のパスはUnix( Solaris、/usr/share/zoneinfo
Linux)によって異なります。他のバリエーションはないように見えるので、少し移植性のあるバージョンでは、2つのディレクトリのどちらが存在するかを確認し、それを使用します。ただし、これは明らかにSolarisとLinuxでのみ機能し、他のUNIXである可能性があります。Windows / MacOS/whatnotについてはわかりません。
TZの有効な場所は、http ://www.timezoneconverter.com/cgi-bin/tzref.tzcにあります(ただし、すべての場所がシステムで利用できるとは限りません。上記のディレクトリを確認してください)。
TZデータベースの詳細については、 http://en.wikipedia.org/wiki/Tz_databaseを参照してください。