使用Perl将2天添加到今天

时间:2013-02-23 16:59:19

标签: perl time

我想使用perl并从今天起添加两天并将其输出为unix时间。我已经找到了很多关于如何将Unix时间转换为可读时间的信息,但我需要将输出作为unix时间。我发现了这个

my $time = time;    # or any other epoch timestamp 
my @months = ("Jan","Feb","Mar","Apr","May","Jun","Jul",
              "Aug","Sep","Oct","Nov","Dec");
my ($sec, $min, $hour, $day,$month,$year) = (localtime($time))[0,1,2,3,4,5]; 
# You can use 'gmtime' for GMT/UTC dates instead of 'localtime'
print "Unix time ".$time." converts to ".$months[$month].
      " ".$day.", ".($year+1900);

如何获取当前时间并添加2天并输出为Unix时间。

4 个答案:

答案 0 :(得分:16)

您是否考虑过使用DateTime套餐?它包含许多日期操作和计算例程,包括添加日期的功能。

有一个FAQ,带有示例here(特别是,请参阅有关示例计算和DateTime格式的部分)。

这是一个片段:

use strict;
use warnings;

use DateTime;

my $dt = DateTime->now();
print "Now: " . $dt->datetime() . "\n";
print "Now (epoch): " . $dt->epoch() . "\n";

my $two_days_from_now = $dt->add(days => 2);
print "Two days from now: " . $two_days_from_now->datetime() . "\n";
print "Two days from now (epoch): " . $two_days_from_now->epoch() . "\n";

产生以下输出:

Now: 2013-02-23T18:30:58
Now (epoch): 1361644258
Two days from now: 2013-02-25T18:30:58
Two days from now (epoch): 1361817058

答案 1 :(得分:2)

你可以改变时间戳,即纪元的秒数​​

更改

my $time = time;

my $time = time + 2 * 24 * 60 * 60 ; # 60 seconds 60 minutes 24 hours times 2

答案 2 :(得分:0)

现在是time()。从现在开始的两天是time() + 2 * 86400。今天(当天开始的午夜)是int(time() / 86400) * 86400。从今天起的两天是今天加上2 * 86400.标量上下文中的localtime会将它们中的任何一个打印为可读日期,除非您真的需要gmtimestrftime(来自POSIX模块) )。

答案 3 :(得分:-1)

time函数返回当前纪元秒,核心模块Time::Seconds为时间段提供有用的常量。

use strict;
use warnings;

use Time::Seconds 'ONE_DAY';

print time + ONE_DAY * 2;

<强>输出

1361872751