2013-02-23 10 views
6

Ich möchte perl verwenden und zwei Tage von heute hinzufügen und dies als Unix-Zeit ausgeben. Ich habe viele Informationen darüber gefunden, wie man Unix-Zeit in lesbare Zeit umwandeln kann, aber ich brauche die Ausgabe als Unix-Zeit. Ich habe diesesVerwenden Sie Perl, um 2 Tage zu Heute hinzuzufügen

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); 

Wie nehme ich aktuelle Zeit und addieren Sie 2 Tage und Ausgabe als Unixzeit.

+1

Verwendung Datetime-Modul für die – snoofkin

+0

können Sie auch Zeit verwenden :: Stück, das ein Kernmodul ist. – TLP

+0

Was meinst du mit "Unix-Zeit"? – cdarke

Antwort

15

Haben Sie in Betracht gezogen, das DateTime-Paket zu verwenden? Es enthält viele Routinen zur Datumsmanipulation und -berechnung, einschließlich der Möglichkeit, Datumsangaben hinzuzufügen.

Es gibt eine FAQ mit Beispielen, here (insbesondere siehe Abschnitt über Beispielberechnungen und DateTime-Formate). Hier

ist ein Ausschnitt:

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"; 

, die die folgende Ausgabe erzeugt:

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

Dank das ist genau das, was ich brauche –

+2

@StevenTharp Sie sollten seine Antwort dann akzeptieren :) – squiguy

+1

Das ist eine * Menge * der Arbeit zu berechnen 'Zeit() + 172800' – Borodin

2

yuu kann den Zeitstempel ändern, die nur wenige Sekunden von epoc ist

Änderung

my $time = time; 

zu

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

Jetzt ist time(). In zwei Tagen ist time() + 2 * 86400. Heute (Mitternacht zu Beginn des aktuellen Tages) ist int(time()/86400) * 86400. Zwei Tage ab heute ist heute plus 2 * 86400. localtime im skalaren Kontext wird alle von ihnen als ein lesbares Datum ausdrucken, es sei denn, Sie wollen wirklich gmtime oder strftime (aus dem POSIX-Modul).

-1

Die Funktion time gibt die aktuellen Epochensekunden zurück und das Kernmodul Time::Seconds enthält nützliche Konstanten für Zeiträume.

use strict; 
use warnings; 

use Time::Seconds 'ONE_DAY'; 

print time + ONE_DAY * 2; 

Ausgang

1361872751 
Verwandte Themen