Perl转换日期时区没有datetime模块

时间:2013-06-11 06:08:28

标签: perl perl-module mod-perl

我的日期格式为:05/26/2013 06:08:00
上述日期的时区是GMT -7

如何将以上内容更改为GMT日期和时间以及格式:  2013年5月26日13:08:00 GMT

注意:我无法安装任何perl模块。我知道我可以通过DateTime轻松完成此操作,但我无法安装它。

感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用Perl安装中应包含的Time::Piece

use Time::Piece;

my $datetime = '05/26/2013 06:08:00';
$datetime   .= '-0700'; # attach the timezone offset

my $dt = Time::Piece->strptime($datetime, '%m/%d/%Y %H:%M:%S %z');
print $dt->strftime('%d %b %Y %H:%M:%S');

答案 1 :(得分:3)

假设您的当地时间已设置为GMT-7,只需:

use POSIX 'mktime', 'strftime';
my $datetime = '05/26/2013 06:08:00';
my ($month,$day,$year,$hour,$min,$sec) = $datetime =~ m{^([0-9]+)/([0-9]+)/([0-9]+) ([0-9]+):([0-9]+):([0-9]+)\z}
    or die "invalid datetime $datetime\n";
my $formatted_time = strftime '%e %B %Y %T %Z', gmtime mktime $sec,$min,$hour,$day,$month-1,$year-1900,0,0,0;

您可能需要%d代替%e和/或%b代替%B;请参阅http://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html并验证系统是否支持所需的格式说明符。