在Perl中将不同时区中的时间转换为本地时间?
Perl内置函数localtime可以将指定的日期时间值转换为本地时间,但它不接受时区号。对于不同的时区,最简单的转换方法是什么?导入其他模块看起来有点复杂,尤其是对于一个线性程序。Localtime()函数使用本地系统时区。您可以在使用TZ环境变量执行程序之前指定时区 下面是一个名为time.pl的perl脚本在Perl中将不同时区中的时间转换为本地时间?,perl,Perl,Perl内置函数localtime可以将指定的日期时间值转换为本地时间,但它不接受时区号。对于不同的时区,最简单的转换方法是什么?导入其他模块看起来有点复杂,尤其是对于一个线性程序。Localtime()函数使用本地系统时区。您可以在使用TZ环境变量执行程序之前指定时区 下面是一个名为time.pl的perl脚本 #!/usr/bin/perl -w my $time = localtime; print $time; 使用和不使用TZ执行它的输出如下 ./time.pl Sun Aug
#!/usr/bin/perl -w
my $time = localtime;
print $time;
使用和不使用TZ执行它的输出如下
./time.pl
Sun Aug 16 00:12:33 2015
TZ=GST ./time.pl
Sat Aug 15 18:42:36 2015
函数的作用是:使用本地系统时区。您可以在使用TZ环境变量执行程序之前指定时区
下面是一个名为time.pl的perl脚本
#!/usr/bin/perl -w
my $time = localtime;
print $time;
使用和不使用TZ执行它的输出如下
./time.pl
Sun Aug 16 00:12:33 2015
TZ=GST ./time.pl
Sat Aug 15 18:42:36 2015
函数的作用是:使用本地系统时区。您可以在使用TZ环境变量执行程序之前指定时区
下面是一个名为time.pl的perl脚本
#!/usr/bin/perl -w
my $time = localtime;
print $time;
使用和不使用TZ执行它的输出如下
./time.pl
Sun Aug 16 00:12:33 2015
TZ=GST ./time.pl
Sat Aug 15 18:42:36 2015
函数的作用是:使用本地系统时区。您可以在使用TZ环境变量执行程序之前指定时区
下面是一个名为time.pl的perl脚本
#!/usr/bin/perl -w
my $time = localtime;
print $time;
使用和不使用TZ执行它的输出如下
./time.pl
Sun Aug 16 00:12:33 2015
TZ=GST ./time.pl
Sat Aug 15 18:42:36 2015
我用约会时间
$ perl -MDateTime -E'say DateTime->now( time_zone => $ARGV[0] )' America/Toronto
2015-08-15T18:39:54
$ perl -MDateTime -E'say DateTime->now( time_zone => $ARGV[0] )' America/Halifax
2015-08-15T19:39:55
我用约会时间
$ perl -MDateTime -E'say DateTime->now( time_zone => $ARGV[0] )' America/Toronto
2015-08-15T18:39:54
$ perl -MDateTime -E'say DateTime->now( time_zone => $ARGV[0] )' America/Halifax
2015-08-15T19:39:55
我用约会时间
$ perl -MDateTime -E'say DateTime->now( time_zone => $ARGV[0] )' America/Toronto
2015-08-15T18:39:54
$ perl -MDateTime -E'say DateTime->now( time_zone => $ARGV[0] )' America/Halifax
2015-08-15T19:39:55
我用约会时间
$ perl -MDateTime -E'say DateTime->now( time_zone => $ARGV[0] )' America/Toronto
2015-08-15T18:39:54
$ perl -MDateTime -E'say DateTime->now( time_zone => $ARGV[0] )' America/Halifax
2015-08-15T19:39:55
将尊重TZ环境变量
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Time::Piece;
say scalar localtime->strftime('%F %T %Z');
foreach ('UTC', 'Europe/Paris', 'America/New_York') {
$ENV{TZ} = $_;
say scalar localtime->strftime('%F %T %Z');
}
输出(在伦敦运行时):
将尊重TZ环境变量
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Time::Piece;
say scalar localtime->strftime('%F %T %Z');
foreach ('UTC', 'Europe/Paris', 'America/New_York') {
$ENV{TZ} = $_;
say scalar localtime->strftime('%F %T %Z');
}
输出(在伦敦运行时):
将尊重TZ环境变量
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Time::Piece;
say scalar localtime->strftime('%F %T %Z');
foreach ('UTC', 'Europe/Paris', 'America/New_York') {
$ENV{TZ} = $_;
say scalar localtime->strftime('%F %T %Z');
}
输出(在伦敦运行时):
将尊重TZ环境变量
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Time::Piece;
say scalar localtime->strftime('%F %T %Z');
foreach ('UTC', 'Europe/Paris', 'America/New_York') {
$ENV{TZ} = $_;
say scalar localtime->strftime('%F %T %Z');
}
输出(在伦敦运行时):
似乎这只适用于类UNIX平台。事实上。。但我认为在其他操作系统中也必须有一个env变量才能更改时区。
TZ
也会影响Windows上的localtime
。只是不确定要传递给它什么值。请注意,您应该在更改$ENV{TZ}
后调用POSIX::tzset()
。这似乎只适用于类UNIX平台。事实上。。但我认为在其他操作系统中也必须有一个env变量才能更改时区。TZ
也会影响Windows上的localtime
。只是不确定要传递给它什么值。请注意,您应该在更改$ENV{TZ}
后调用POSIX::tzset()
。这似乎只适用于类UNIX平台。事实上。。但我认为在其他操作系统中也必须有一个env变量才能更改时区。TZ
也会影响Windows上的localtime
。只是不确定要传递给它什么值。请注意,您应该在更改$ENV{TZ}
后调用POSIX::tzset()
。这似乎只适用于类UNIX平台。事实上。。但我认为在其他操作系统中也必须有一个env变量才能更改时区。TZ
也会影响Windows上的localtime
。只是不确定要传递给它什么值。请注意,您应该在更改$ENV{TZ}
后调用POSIX::tzset()
。这只是OP已经拒绝的答案的较长版本。Windows肯定不知道Europe/Paris
。此外,在更改$ENV{TZ}
后,您应该调用POSIX::tzset()
。这只是OP已经拒绝的答案的较长版本。Windows肯定不知道Europe/Paris
。此外,在更改$ENV{TZ}
后,您应该调用POSIX::tzset()
。这只是OP已经拒绝的答案的较长版本。Windows肯定不知道Europe/Paris
。此外,在更改$ENV{TZ}
后,您应该调用POSIX::tzset()
。这只是OP已经拒绝的答案的较长版本。Windows肯定不知道Europe/Paris
。而且,在更改$ENV{TZ}
之后,应该调用POSIX::tzset()
。