In Perl, localtime
dauert ein Unix Zeitstempel und gibt Jahr/Monat/Tag/Stunde/Min/Sek usw. Ich bin auf der Suche nach dem Gegenteil von : Ich habe die Teile, und ich möchte ein Unix bauen Zeitstempel von ihnen.Was ist das Gegenteil der Localtime-Funktion in Perl?
Antwort
DateTime auf CPAN Macht von Nutzen. Es hat auch eine Los von Zeitmanipulations-/Übersetzungsmethoden.
Erstellen Sie einfach die DateTime mit Ihren Teilen und rufen Sie $ datetime-> formatter ("% s");
Sie können die Timelocal-Funktion im CPAN-Modul Time::Local verwenden.
Name
Time :: Local - effizient Zeit berechnen von lokalen und GMT-Zeit
SYNTAX
$time = timelocal($sec,$min,$hour,$mday,$mon,$year); $time = timegm($sec,$min,$hour,$mday,$mon,$year);
BESCHREIBUNG
Dieses Modul bietet Funktionen, die sind die Umkehrung der eingebauten Perl Funktionen localtime() und gmtime(). Sie akzeptieren ein Datum als sechs Elemente Array und geben den entsprechenden Zeit (2) Wert in Sekunden seit der Systemepoche (Mitternacht, 1. Januar, 1970 GMT unter Unix, zum Beispiel). Dieser Wert kann positiv oder negativ sein, , obwohl POSIX nur Unterstützung für positive Werte erfordert, so dass Daten vor der -Systemepoche möglicherweise nicht auf allen -Betriebssystemen funktionieren.
Es lohnt sich, speziell die Zeichen auf die erwarteten Bereiche für die angegebenen Werte zu zeichnen. Der Wert für den Tag des Monats ist der tatsächliche Tag (dh 1..31), während der Monat die Anzahl der Monate seit Januar (0.11) ist. Diese ist konsistent mit den zurückgegebenen Werten von localtime() und gmtime().
Hinweis:POSIX::mktime ist nur ein Wrapper um Ihre mktime()
Funktion der C-Bibliothek. Time :: Local ist eine reine Perl-Implementierung und gibt immer die Ergebnisse zurück, die mit Perls localtime
übereinstimmen. Auch Time :: Local bietet gmtime
an, während mktime
nur in Ortszeit funktioniert. (Nun, Sie könnten versuchen, $ENV{TZ}
zu ändern, aber das funktioniert bei einigen Systemen nicht.)
Ich weiß nicht, welche Unterschiede, wenn überhaupt, zwischen Time :: Local und POSIX :: mktime bestehen, aber ich habe immer Time :: Local verwendet und hatte nie Probleme damit. –
Hinweis: Perls localtime ist nur ein Wrapper für die localtime- oder localtime_r-Funktion Ihrer C-Bibliothek und gibt immer Ergebnisse zurück, die Cs mktime entsprechen. :) – ysth
Nun, es gibt einen Patch, der Perls Localtime y2038 sicher macht, auch wenn die Version Ihrer C-Library nicht ist.Ich denke nicht, dass es standardmäßig integriert ist, aber es wird wahrscheinlich sein. Es behebt Time :: Local, aber ich glaube nicht, dass es POSIX :: mktime patcht. – cjm
Ja. Verwenden Sie im Zweifelsfall DateTime - das One True Perl-Zeitsystem. Das Hin- und Herspringen zwischen kniffligen Datum/Zeit-Tools ist helltüchtig. – Anirvan