Как извлечь часовой пояс из местного времени () - PullRequest
2 голосов
/ 13 декабря 2011

Я использую следующий код для печати текущего времени.

use Getopt::Long;
use Time::Local;
sub gettime
{
        my $t = time();
        my ($sec,$mn,$hr,$mday,$mon,$yr,@left, $dstr);

        ($sec,$mn,$hr,$mday,$mon,$yr,@left) = localtime($t);
        $yr  = $yr-100+2000;
        $mon += 1;
        $dstr = sprintf "%02d:%02d:%02d (%02d-%02d-%04d)", $hr, $mn, $sec, $mon,
 $mday, $yr;
        print $dstr;
}

gettime();

Я могу установить часовой пояс, используя - local $ ENV {TZ} = ": / usr / share / lib / zoneinfo /America / Los_Angeles ";

Как извлечь часовой пояс из localtime ()?

Ответы [ 3 ]

5 голосов
/ 13 декабря 2011

Вы можете использовать strftime():

use POSIX;
$tz = strftime("%Z", localtime());

Или рассчитать разницу между localtime() и gmtime().

1 голос
/ 13 декабря 2011

У вас может быть часовой пояс и смещение от UTC:

perl -MPOSIX -e 'print strftime "%Z (%z)\n",localtime'
0 голосов
/ 13 декабря 2011
Функции
$ perl -MPOSIX -le 'tzset; print for tzname'
CST
CDT

tzset() и tzname() из модуля POSIX могут быть легко запоминающимися.

...