当前位置:  开发笔记 > 编程语言 > 正文

在Perl中为ISO 8601次添加时间

如何解决《在Perl中为ISO8601次添加时间》经验,为你挑选了1个好方法。

我有一个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中有一个简单的方法吗?



1> ikegami..:

该特定的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更不容易出错.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有