6

perl を使って今日から 2 日を追加し、これを 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パッケージの使用を検討しましたか?日付を追加する機能を含む、多くの日付操作および計算ルーチンが含まれています。

ここに例を含む FAQ があります(特に、サンプルの計算と 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 はエポックからの秒数であるタイムスタンプを変更できます

変化する

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()。今から 2 日後ですtime() + 2 * 86400。今日 (今日の午前 0 時) はint(time() / 86400) * 86400です。今日から 2 日間は、今日に 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 に答える