如何使用Perl将纪元时间转换为UTC时间?

时间:2015-11-05 09:59:12

标签: perl

我需要使用Perl将纪元日期和时间字符串转换为UTC日期和时间。

请分享您的想法。

#!/usr/bin/perl
my $start_time='1448841600';
my $stop_time='1448863200';

以上两个日期和时间采用纪元格式,并且应将其转换为UTC日期和时间。

5 个答案:

答案 0 :(得分:5)

您可以使用gmtime进行转换,并使用strftime进行格式化。

  use POSIX 'strftime';

  strftime "%d-%m-%Y-%H:%M:%S", gmtime('1448841600');

答案 1 :(得分:4)

我建议使用Time::Piece模块来操作日期。

Node* ptr

您还可以按照此处所述进行时区数学运算:How can I parse dates and convert time zones in Perl?

答案 2 :(得分:3)

使用gmttime获取UTC时间。 http://perldoc.perl.org/functions/gmtime.html

答案 3 :(得分:2)

您可以使用gmtime功能:

my $time = "1448841600";
my @months = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
my ($sec, $min, $hour, $day,$month,$year) = (gmtime($time))[0,1,2,3,4,5]; 
print "Time ".$time." converts to ".$months[$month]." ".$day.", ".($year+1900);
print " ".$hour.":".$min.":".$sec."\n";

输出:

Time 1448841600 converts to Nov 30, 2015 0:0:0

答案 4 :(得分:0)

如果您需要对这些日期时间进行更多操作,use DateTime

use DateTime;
my $start_time ='1448841600';
my $stop_time  ='1448863200';
my $start = DateTime->from_epoch(epoch=>$start_time)->set_time_zone('UTC');
my $stop  = DateTime->from_epoch(epoch=>$stop_time)->set_time_zone('UTC');
say $start->strftime("%F %T %Z");  # 2015-11-30 00:00:00 UTC
say $stop->strftime("%F %T %Z");   # 2015-11-30 06:00:00 UTC