我想使用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时间。
答案 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
会将它们中的任何一个打印为可读日期,除非您真的需要gmtime
或strftime
(来自POSIX模块) )。
答案 3 :(得分:-1)
time
函数返回当前纪元秒,核心模块Time::Seconds
为时间段提供有用的常量。
use strict;
use warnings;
use Time::Seconds 'ONE_DAY';
print time + ONE_DAY * 2;
<强>输出强>
1361872751