2017-07-10 2 views
0

Ich möchte Datum und Uhrzeit vergleichen, ob der Zeitstempel aus der Datei, die ich öffnen werde, gleich oder größer sein wird, als wenn mein Zeitstempel aussieht dies:Vergleichen von Datum und Uhrzeit und die gleiche Zeit in Perl

$Date = "20170608"; 
$Time = "105006"; 

Mein Hauptproblem ist, wie es ohne Zugabe von perl-Bibliotheken effizient möglicherweise zu tun ist und wie es zu überprüfen, wenn es geht Situation Datum Schalt sein und die Stunde wird zum Beispiel 23.59.44

+0

, dass die Zeit 01.05.06 ist? – Sobrique

+0

Ja, mein Fehler –

+1

* "ohne Perl-Bibliotheken hinzuzufügen" * Warum beschränkst du dich auf nur 5% der Macht von Perl? – Borodin

Antwort

2

Time::Piece ist Kern in Perl und unterstützt 'strptime'.

#!/usr/bin/env perl 

use strict; 
use warnings; 
use Time::Piece; 

my $Date = "20170608"; 
my $Time = "10506"; 

my $ts = Time::Piece->strptime("$Date $Time", "%Y%m%d %H%M%S"); 
print $ts, "\n"; 

print "Delta:", $ts->epoch - time(), "\n"; 

Waren auf welchem ​​Zeitpunkt unklar, dass $Time vertreten - strptime wandelt sie in 10.50.06, aber ich vermute, es könnte seine 01.05.06 bestimmt?

Wenn ja, dann Null-Pad.

$Time = sprintf ("%06d", $Time); 

Um den Zeitstempel aus den Metadaten der Datei zu lesen, dann müssen Sie stat:

my $mtime = (stat $filename)[9]; 
+0

Es wird angenommen, 10:50:06 Das Problem ist, dass ich es nicht mit der aktuellen Zeit vergleichen werde, sondern mit Datum, das als Variable gespeichert wird. Und das Problem ist, dass die Zeit falsch sein kann - es wird um 00:00:00 nach 12 Uhr gedreht und dann muss ich das Datum irgendwie überprüfen –

+0

Prüfen, ob eine Zeit heute oder gestern ist wahrscheinlich einfacher als Sie denken - konvertieren angenommen, es ist heute - dann schau dir die Größe des Zeitdeltas an. Wenn es> 1d ist, dann ist es wahrscheinlich das falsche Datum. Ich kann jedoch nicht ins Detail gehen, ohne Ihren Zeitvergleich zu kennen. – Sobrique

+0

$ DataStart = "20170608"; $ TimeStart = "235806"; $ DatumoCompare = "20170609"; $ TimetoCompare = "000106"; –

Verwandte Themen