/blog/perl


substr() in Perl
[153083 mal gelesen]
foreach in Perl
[128876 mal gelesen]
Arrays in Perl - Besonderheiten
[124863 mal gelesen]
split() in Perl - Zeichenketten teilen
[112950 mal gelesen]
open() - Dateien öffnen in Perl
[108704 mal gelesen]
grep - Listen durchsuchen in Perl
[94325 mal gelesen]
chomp() in Perl
[93377 mal gelesen]
push in Perl
[90551 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[75673 mal gelesen]
index() in Perl - Zeichenkette in Zeichenkette suchen
[59063 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 15610 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

Zusätzlichen Anzeigename in der Netzwerkumgebung anpassen bei Vista

rand() - Zufallszahl ermitteln in Perl

Hash Slices - Was ist das?

rindex in Perl - Zeichenketten "von rechts" durchsuchen

HTPC unter Vista - Mein Wohnzimmer-PC

Perl in PHP einbinden

Systemvoraussetzungen für Windows Vista

open() - Dateien öffnen in Perl



0.0421619415283203 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

Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


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
19.5.2024

Es ist
3:02:49 Uhr

Ihre IP:
18.190.156.78

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
4397402


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



Impressum