我在时区和Perl方面遇到了一些麻烦。我的饲料来自(美国)东海岸;我的服务器在中部时间,最终产品需要反映东部时间。从提要中,我得到了类似HH:mm
的时间(它来自时间表,任何一天都是一样的)。所以我使用str2time
将其转换为epoch。现在,当我将时间表发送到客户端(JSON)时,我正在发送服务器时间。我运行的问题是,我真的不想用my $time = time() + 3600
来添加EST/EDT的小时数。我的问题是:我能用不同的方式加上那个小时吗?
use DateTime qw( );
say DateTime
->from_epoch(epoch => $epoch, time_zone => 'America/Chicago')
->strftime('%Y-%m-%d %H:%M:%S');
这是Q&D或一次性"解决方案":
my @tvs = localtime( time );
$tvs[2]++;
my $eastern_time = POSIX::strftime( $my_format, @tvs );
这就是它的要旨。可能还有更复杂的解决方案。