/blog/perl


substr() in Perl
[127440 mal gelesen]
foreach in Perl
[116485 mal gelesen]
Arrays in Perl - Besonderheiten
[109553 mal gelesen]
open() - Dateien öffnen in Perl
[97984 mal gelesen]
split() in Perl - Zeichenketten teilen
[89230 mal gelesen]
chomp() in Perl
[84664 mal gelesen]
grep - Listen durchsuchen in Perl
[81957 mal gelesen]
push in Perl
[78903 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[61435 mal gelesen]
print in Perl
[49885 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 11503 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

ucfirst () - Erstes Zeichen einer Zeichenkette in Großbuchstaben umwandeln

close - Datei schließen in Perl

Hash of Arrays - Oder: Wie bilde ich ein Hash aus Arrays?

Befehle, die standartmäßig $_ verwenden, und solche, die das nicht tun

Cache.pm - Cache-Modul für Perl - A Cache-Module for Perl

foreach in Perl

Continue in Perl - Erweiterte Schleifenausführung

goto in Perl oder: Wie erzeuge ich Spaghetti-Code

Hash Slices - Was ist das?

Arrays in Perl - Besonderheiten



0.0161597728729248 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: Fabian
Kommentar:
Hallo zusammen,
ich suche schon etwas im Internet und bin bisher nicht fündig geworden.
Zum Beitrag


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



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
20.8.2018

Es ist
1:21:06 Uhr

Ihre IP:
54.161.49.216

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3699727


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
2728293031

Impressum