如何使用 Perl 将纪元时间转换为 UTC 时间?
How to convert epoch time to UTC time using Perl?
我需要使用 Perl 将纪元日期和时间字符串转换为 UTC 日期和时间。
请分享您的想法。
#!/usr/bin/perl
my $start_time='1448841600';
my $stop_time='1448863200';
以上两个日期和时间是纪元格式,需要转换成UTC日期和时间。
使用gmtime获取UTC时间。
您可以使用 gmtime
进行转换,并使用 strftime
进行格式化。
use POSIX 'strftime';
strftime "%d-%m-%Y-%H:%M:%S", gmtime('1448841600');
我建议使用 Time::Piece
模块来处理日期。
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
my $start_time=Time::Piece -> new(1448841600);
print $start_time,"\n";
print $start_time -> epoch,"\n";
print $start_time -> strftime ( "%Y-%m-%d %H:%M:%S" ),"\n";
#nb - you can also use localtime/gmtime:
my $end_time = gmtime(1448863200);
print $end_time,"\n";
print $end_time->epoch,"\n";
您还可以按照此处所述进行时区数学运算:How can I parse dates and convert time zones in Perl?
您可以使用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
如果您需要对这些日期时间进行更多操作,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
perl -E 'say scalar gmtime(1638884356)'
当地时间相同
我需要使用 Perl 将纪元日期和时间字符串转换为 UTC 日期和时间。
请分享您的想法。
#!/usr/bin/perl
my $start_time='1448841600';
my $stop_time='1448863200';
以上两个日期和时间是纪元格式,需要转换成UTC日期和时间。
使用gmtime获取UTC时间。
您可以使用 gmtime
进行转换,并使用 strftime
进行格式化。
use POSIX 'strftime';
strftime "%d-%m-%Y-%H:%M:%S", gmtime('1448841600');
我建议使用 Time::Piece
模块来处理日期。
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
my $start_time=Time::Piece -> new(1448841600);
print $start_time,"\n";
print $start_time -> epoch,"\n";
print $start_time -> strftime ( "%Y-%m-%d %H:%M:%S" ),"\n";
#nb - you can also use localtime/gmtime:
my $end_time = gmtime(1448863200);
print $end_time,"\n";
print $end_time->epoch,"\n";
您还可以按照此处所述进行时区数学运算:How can I parse dates and convert time zones in Perl?
您可以使用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
如果您需要对这些日期时间进行更多操作,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
perl -E 'say scalar gmtime(1638884356)'
当地时间相同