我有一个ISO 8601时间存储在一个变量中,我有一些小时存储在另一个变量中,如下所示:
my $current_time = shift; #looks like: 2015-07-01T15:38:08Z my $hours = shift; # looks like: 12
我的目标是将小时数添加到当前时间,但似乎没有任何内置的Perl函数来执行此操作.在Powershell中,您可以执行以下操作:
$currentTime = $currentTime .AddHours($hours)
在Perl中有一个简单的方法吗?
该特定的ISO 8601配置文件也称为RFC3339.
use DateTime::Format::RFC3339; my $dt = DateTime::Format::RFC3339->parse_datetime('2015-07-01T15:38:08Z'); $dt->add( hours => 1 ); print "$dt\n"; # 2015-07-01T16:38:08Z
如果要接受任意ISO 8601配置文件,可以使用DateTime :: Format :: ISO8601.
use DateTime::Format::ISO8601; my $dt = DateTime::Format::ISO8601->parse_datetime('2015-07-01T15:38:08Z'); $dt->set_time_zone('UTC'); # Convert to UTC ("Z") if it's not already. $dt->add( hours => 1 ); print $dt->iso8601().'Z', "\n"; # 2015-07-01T16:38:08Z
我发布了这些替代方案,因为这些模块比Time :: Piece更不容易出错.