我曾经假设它会如此简单$ENV{TZ},但TZ环境变量没有设置,但date命令仍然知道我在EDT中,所以必须有其他方法来确定时区(除了说chomp(my $tz = qx/date +%Z/);).
Igo*_*kon 15
use POSIX;
print strftime("%Z", localtime()), "\n";
Run Code Online (Sandbox Code Playgroud)
如果你想要比POSIX(但可能更慢)更便携的东西你可以使用DateTime :: TimeZone:
use DateTime::TimeZone;
print DateTime::TimeZone->new( name => 'local' )->name();
Run Code Online (Sandbox Code Playgroud)
use POSIX;
localtime();
my ($std, $dst) = POSIX::tzname();
Run Code Online (Sandbox Code Playgroud)
tzname()允许您访问POSIX全局tzname- 但您需要首先调用localtime()它.