6

我想使用 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

4 回答 4

16

您是否考虑过使用该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
于 2013-02-23T17:24:43.957 回答
2

yuu 可以更改时间戳,即从 epoc 开始的秒数

改变

my $time = time;

my $time = time + 2 * 24 * 60 * 60 ; # 60 seconds 60 minutes 24 hours times 2
于 2013-02-23T21:44:53.453 回答
0

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

于 2013-02-24T06:54:56.263 回答
-1

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

use strict;
use warnings;

use Time::Seconds 'ONE_DAY';

print time + ONE_DAY * 2;

输出

1361872751
于 2013-02-24T09:59:28.850 回答