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
不幸的是,上面的路径在不同的 Unix 上是不同的(/usr/share/lib/zoneinfo
在 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。