/blog/perl


substr() in Perl
[121609 mal gelesen]
foreach in Perl
[112078 mal gelesen]
Arrays in Perl - Besonderheiten
[103935 mal gelesen]
open() - Dateien öffnen in Perl
[94639 mal gelesen]
split() in Perl - Zeichenketten teilen
[81679 mal gelesen]
chomp() in Perl
[81393 mal gelesen]
grep - Listen durchsuchen in Perl
[78733 mal gelesen]
push in Perl
[73956 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[57714 mal gelesen]
print in Perl
[47855 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


Donnerstag, 27.11.2008, 14:58:56 Uhr

Timestamp oder Epochenwert in Datum umwandeln - live


Ich stand heute mal wieder vor dem Problem, daß eines der von mir betreuten Scripte nicht richtig lief. Wie sich herausstellte, lag es daran, daß einige Zeitwerte falsch gesetzt waren. Wenn man erst mal so weit ist, daß man weiß, wo der Fehler steckt, kein Problem, nur bis man so weit ist, kann es schon man nerven. Vor allem, wenn man zig Timestamps von Hand in ein Datum und 'ne Uhrzeit umwandeln muß, um zu sehen, warum denn nun 'was schiefläuft.

Deswegen (tataaa) hab ich mir (und Euch, liebe Gäste) nun ein kleines Online-Script gebastelt, mit dem man solche Zeitwerte online umwandeln kann.

Ich hoffe es gefällt!

Die kleine Hilfsseite ist hier zu finden.



Kommentare zum Beitrag "Epoche live in Datum umwandeln"

Kommentar von Ulli
da gibts auch ne feine Seite:

http://www.epochconverter.com/

Kommentar von Admin
Grmbf... Schade daß man sowas immer nicht findet wenn man es mal braucht... Trotzdem Danke!

Kommentar von Karl
#!/usr/bin/perl
## Author: Jannik Geyer
## creation Date: 13.10.2011
## Version: 1.0
#--------------- Module werden eingebunden ---------------
use warnings; #standartmodul
use strict; #Standartmodul
use POSIX qw(strftime) ; #Zeit modul
my $gl_now_string_Tag = strftime "%d.%m.%Y", localtime; #Tage mit use Posix herausfinden
my $gl_now_string_Zeit = strftime "%H.%M.%S", localtime; #Zeit mit use Posix herausfinden
use Date::Calc qw(Days_in_Month Delta_Days); #importiert C Funktionen

#--------------- User Eingabe ----------------

print "Datum so eingeben: DD.MM.YYYY\n"; #aufforderung zum eingeben deines geburtstages.
#time festlegen von wann bis wann er berechnen soll
print "Geburtstag Eingeben: ";
my $geburtstag = <STDIN>;
chomp $geburtstag; #Zeilenumbruch von dem String Geburtstag entfernen
if ($geburtstag =~ /^([0-3]\d)\.([01]\d)\.(\d\d\d\d)$/ ) { # hier werden die gröbsten fehler bei der eingabe abgefangen
     print "Datums Eingabe ok\n";
}
else {
     print "Kein gültiges Datum. Programm ENDE!\n";
     exit 8;
}
my $bis_wann = "$gl_now_string_Tag";
print "Zeit Eingeben:";
my $zeit1 = <STDIN>;
chomp $zeit1;
if ($zeit1 eq "" or $zeit1 !~ /[0-9]/){
     $zeit1 = "00.00.00";
     print "[Sie müssen Zahlen von 0-9 eingeben]set time to [$zeit1]\n";
}
my $zeit2 = "$gl_now_string_Zeit";
my ($schaltjahrrechner, $keinschaltjahr) = 0;

print "Zeitraum zwischen $geburtstag : $zeit1 - $gl_now_string_Tag : $gl_now_string_Zeit wird berechnet\n";
#------- Hash in dem die anzahl der tage, der entsprechenden monate stehen. --------
my %monats_tage_hash;
$monats_tage_hash{'01'} = "31";
$monats_tage_hash{'02'} = "28";
$monats_tage_hash{'03'} = "31";
$monats_tage_hash{'04'} = "30";
$monats_tage_hash{'05'} = "31";
$monats_tage_hash{'06'} = "30";
$monats_tage_hash{'07'} = "31";
$monats_tage_hash{'08'} = "31";
$monats_tage_hash{'09'} = "30";
$monats_tage_hash{'10'} = "31";
$monats_tage_hash{'11'} = "30";
$monats_tage_hash{'12'} = "31";
#----------------------------------
#--------- variablen mit den richtigen daten füllen ----------
my $year = substr( $geburtstag, 6, 4 );
my $endyear = substr( $bis_wann, 6, 4 );
my $month = substr( $geburtstag, 3, 2 );
my $endmonth = substr( $bis_wann, 3, 2 );
my $tag = substr( $geburtstag, 0, 2 );
my $endtag = substr( $bis_wann, 0, 2 );
my $tage_zaehler = 0;
my $days;
#variablen mit zeiten füllen
my $hour1 = substr( $zeit1, 0, 2 );
my $min1 = substr( $zeit1, 3, 2 );
my $sec1 = substr( $zeit1, 6, 2 );
my $hour2 = substr( $zeit2, 0, 2 );
my $min2 = substr( $zeit2, 3, 2 );
my $sec2 = substr( $zeit2, 6, 2 );
#----------------------------------------------
# hier wird jetzt geguckt ob das Datum in der Zukunft liegt oder richtig ist
print "Datum liegt in der ZUKUNFT! " and exit 8 , if ($year > $endyear);
print "Datum liegt in der ZUKUNFT! " and exit 8 , if ($year == $endyear and $month > $endmonth);
print "Datum liegt in der ZUKUNFT! " and exit 8 , if ($year == $endyear and $month == $endmonth and $tag > $endtag);
print "Datum liegt in der ZUKUNFT! " and exit 8 , if ($year == $endyear and $month == $endmonth and $tag == $endtag and $hour1 > $hour2);
print "Datum liegt in der ZUKUNFT! " and exit 8 , if ($year == $endyear and $month == $endmonth and $tag == $endtag and $hour1 == $hour2 and $min1 > $min2);
print "Datum liegt in der ZUKUNFT! " and exit 8 , if ($year == $endyear and $month == $endmonth and $tag == $endtag and $hour1 == $hour2 and $min1 == $min2 and $sec1 > $sec2);

#ausrechnen der tage + beachten der schaltjahre

while () {
     $days = Days_in_Month( $year, $month ); #"Days_in_Month" - Funktion aus dem Modul Date::Calc
     $tage_zaehler = $tage_zaehler + $days; #Tage zusamenzählen
     $month++; # Monat um 1 erhöhen
     if ( $month == 13 ) { # wenn $month gleich 13
          if ( $year % 400 == 0 ) { # wenn $year / 400 kein rest entsteht dann
               print "$year ist ein Schaltjahr\n"; # ist es ein schaltjahr
               $schaltjahrrechner++; # schaltjahr zähler um 1 erhöhen
          } #end if
          elsif ( $year % 4 == 0 && $year % 100 != 0 ) { # wenn $year / 4 gleich kein Rest und $year /100 gleich Rest, dann
               print "$year ist ein Schaltjahr\n"; # ist es ein schaltjahr
               $schaltjahrrechner++; ##schaltjahr zähler um 1 erhöhen
           } #end if
          else { #wenn nichts von beide
               $keinschaltjahr++; #zähler für kein schaltjahr um 1 erhöhen
               print "$year ist kein Schaltjahr\n"; # ist kein schaltjahr
          } #endif
          $year++; #Jahr um 1 erhöhen
          $month = 1; #Monat auf 1 setzen
     } #end if
     if ( $year == $endyear and $month == $endmonth ) { #wenn Endbedingung erreicht
          last; #beende die schleife
     } #end If
} #end schleife
my $Dd = Delta_Days( $year, $month, $tag, $endyear, $endmonth, $endtag );
$tage_zaehler = $tage_zaehler + $Dd;

#---------------------------------

my $day = 24;
my $stunde_zaehler = 0;
my $minute_zaehler = 0;
my $second_zaehler = 0;

#logarithmus der die zeit berechnet

if ( $hour1 < $hour2 or $hour1 == $hour2 ) { #wenn Anfangssutde kleiner oder gleich wie Endstunde ist
     $stunde_zaehler = $hour2 - $hour1; #Rechne Endstunde - Anfangsstunde
}
else { #sonst
     $stunde_zaehler = $hour2 - $hour1; #Rechne Endstunde - Anfangsstunde und speichere in der variable "$stunde_zaehler"
     $stunde_zaehler = $stunde_zaehler + 24; #"$stunde_zaehler" + 24 stunden rechnen
     $tage_zaehler = $tage_zaehler - 1; #"$tage_zaehler" um 1 verringern
}

if ( $min1 < $min2 or $min1 == $min2 ) { #wenn Anfangsmin kleiner oder gleich wie Endmin ist
     $minute_zaehler = $min2 - $min1; #Rechne Endmin - Anfangsmin
}
else { #sonst
     $minute_zaehler = $min2 - $min1; #Rechne Endstunde - Anfangsstunde und speicher e in der variable "$stunde_zaehler"
     $minute_zaehler = $minute_zaehler + 60; #"$minute_zaehler" + 60 minuten rechnen
     $stunde_zaehler = $stunde_zaehler - 1; #"$stunde_zaehler" um 1 verringern
     if ( $stunde_zaehler == 0 ) { #wenn "$stunde_zaehler" gleich 0
          $stunde_zaehler = 24; #setze ihn zurück auf 24
          $tage_zaehler--; #und verringere um 1 tag
     }
}

if ( $sec1 < $sec2 or $sec1 == $sec2) {
     $second_zaehler = $sec2 - $sec1;
}
else {
     $second_zaehler = $sec2 - $sec1;
     $second_zaehler = $second_zaehler + 60;
     $minute_zaehler = $minute_zaehler - 1;
     if ( $minute_zaehler == 0 ) {
          $minute_zaehler = 60;
          $stunde_zaehler--;
          if ( $stunde_zaehler == 0 ) {
               $stunde_zaehler = 24;
               $tage_zaehler--;
          }
     }
}

if ( $year % 400 == 0 ) { #erklärung OBEN!
     $monats_tage_hash{'02'} = "29";
}
elsif ( $year % 4 == 0 && $year % 100 != 0 ) {
     $monats_tage_hash{'02'} = "29";
}

print "Schaltjahre = $schaltjahrrechner ||| Keine Schaltjahre = $keinschaltjahr\n";

#-----------prozentwert errechnen------------

my $counter = $keinschaltjahr / ( $schaltjahrrechner + $keinschaltjahr );
$counter = 1 - $counter;
my $tagerechner = 365 + $counter;
my $jahre = $tage_zaehler / $tagerechner;

#--------------------------------------------

my $gerundetes_jahr = sprintf( "%.5f", $jahre ); #auf fünf stellen runden
my $pos = index( $gerundetes_jahr, "." ); #position des Punktes herausfinden

$gerundetes_jahr = "0." . substr( $gerundetes_jahr, $pos + 1, 5 ); #Stellen nach dem punkt in variable "$gerundetes_jahr" speichern
$jahre = int $jahre; #für ausgaben bereit machen´

my $monate = 12 * $gerundetes_jahr; #prozentwert errechnen
my $gerundeter_monat = int $monate;
my $gerundeter_Tag = sprintf( "%.4f", $monate); #auf fünf stellen runden
my $pos2 = index( $gerundeter_Tag, "." ); #position des Punktes herausfinden

$gerundeter_Tag = "0." . substr( $gerundeter_Tag, $pos2 + 1, 3 ); #Stellen nach dem punkt in variable "$gerundeter_Tag" speichern
$gerundeter_Tag = $gerundeter_Tag * $monats_tage_hash{$endmonth}; #Tage ausrechnen

my $sekunden_anzahl_gesamt = 0;
$sekunden_anzahl_gesamt = 60 * 60 * 24 * $tage_zaehler + $second_zaehler + 60 * $minute_zaehler + 60 * 60 * $stunde_zaehler;
#------------------------------------ AUSGABE ----------------------------------------
my $ergebnisstring = "Sie sind insgesamt $tage_zaehler Tage alt, oder genauer sind sie $jahre Jahre, $gerundeter_monat Monate, $gerundeter_Tag Tage, $stunde_zaehler Stunden, $minute_zaehler Minuten und $second_zaehler Sekunden alt";
my $len = length ($ergebnisstring)-3;
$gerundeter_Tag = int $gerundeter_Tag;
print"+", "-" x $len, "+\n";
print"|Sie sind insgesamt $tage_zaehler Tage($sekunden_anzahl_gesamt Sekunden) alt, oder genauer sind sie $jahre Jahre, $gerundeter_monat Monate, $gerundeter_Tag Tage, $stunde_zaehler Stunden, $minute_zaehler Minuten und $second_zaehler Sekunden alt|\n";
print"+", "-" x $len, "+\n";
print "Zum beenden belibige Taste drücken...";
my $ende = <STDIN>;
#hier ist dass programm fertig...
#Perl ist perlig
#-------------------------------------------------------------------------------------
exit 0;

was haltet ihr davon?



Thema: Perl

Der Beitrag "Epoche live in Datum umwandeln" wurde 10295 mal gelesen.

Es wurde 3 x über diesen Beitrag abgestimmt.
Die durchschnittliche Beurteilung liegt bei
2.3 (1 = sehr gut - 6 = grottenschlecht).

Kommentar schreiben  Druckansicht  Seitenanfang 
Beurteilen 






 Zufällige Beiträge im /blog/perl

Unicode mit Perl - Einfache (?) Anwendung

Vorrausschauende und zurückblickende Suche mit regulären Ausdrücken

Eine Datei zeilenweise einlesen mit Perl

IP-Adresse anhand des Domainnamens herausfinden

Neue Suchfunktion - die 2.

Cookies mit Perl

Reguläre Ausdrücke

rindex in Perl - Zeichenketten "von rechts" durchsuchen

Mein Wohnzimmer-PC - Erste Erfahrungen

Perl in PHP einbinden



0.0626311302185059 sec. to build



...Blogsoftware in pure Perl - Powered by a lot of Coffee...


SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl
truncate - Dateigröße verändern in Perl
Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Von: Schorschel eastcoast
Kommentar:
Danke. Das hat mir weitergeholfen.
Zum Beitrag


Von: Jessica
Kommentar:
Kann man auch zwei Datein parallel einlesen?

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

Zum Beitrag


Von: Sammy
Kommentar:
wie lautet denn die syntax wenn ich eine perl datei in einer perl datei öffnen will. also hier steht ja "|datei: " muss ich da noch ein ".pl" anhängen oder nicht?
Zum Beitrag



Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
21.11.2017

Es ist
21:45:01 Uhr

Ihre IP:
54.158.214.111

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3538729


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Mo Di Mi Do Fr Sa So
12345
6789101112
13141516171819
20212223242526
27282930

Impressum