2013-02-23 27 views
6

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

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时间。

+1

使用的DateTime模块为 – snoofkin 2013-02-23 17:10:19

+0

您还可以使用时间::片,这是一个核心模块。 – TLP 2013-02-23 17:25:06

+0

“Unix时间”是什么意思? – cdarke 2013-02-23 17:27:16

回答

15

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

有一个常见问题,例如here(特别是,请参阅关于示例计算和日期时间格式的部分)。

这里是一个片段:

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 
+0

谢谢,这正是我所需要的 – 2013-02-23 18:41:00

+2

@StevenTharp你应该接受他的答案然后:) – squiguy 2013-02-23 19:29:30

+1

这是一个*很多*的工作来计算'time()+ 172800' – Borodin 2013-02-24 10:01:25

2

悠可以改变的时间戳,这是从EPOC秒

变化

my $time = time; 

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

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

-1

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

use strict; 
use warnings; 

use Time::Seconds 'ONE_DAY'; 

print time + ONE_DAY * 2; 

输出

1361872751