Schrift
[thread]9132[/thread]

Umrechnung von Unix Time mit Perl (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
Struppi
 2007-06-28 13:56
#77955 #77955
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Keine ahnung was für eine DB du benutzt, aber mit mysql kannst du schon bei der Abfrage den Timestamp umwandeln.
Rambo
 2007-06-29 13:06
#77956 #77956
User since
2003-08-14
803 Artikel
BenutzerIn

user image
leider noch eine kleine Frage:
es scheint timestamps zu geben die länger sind als 10 Zeichen.
In meinem Falle 13 Zeichen.

Habt ihr das schon mal gesehen. Das wird dann nicht mehr
richtig umgerechnet.

danke schon mal
gr. rambo
nepos
 2007-06-29 14:56
#77957 #77957
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, das solltest du mal checken, was da genau in der Datenbank liegt. Hört sich für mich nicht wie ein UNIX-Timestamp an.
sid burn
 2007-06-29 15:36
#77958 #77958
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=renee,28.June.2007, 11:40][quote=sid burn,28.06.2007, 11:37]Der 28.6.2007 09:00:12 hat den Timestamp 1185606012

Code: (dl )
1
2
sidburn@sid:~/perl$ perl -wle 'print scalar localtime(1185606012)'
Sat Jul 28 09:00:12 2007
[/quote]
Nö, das ist der 28. Juli (In Zahlen 28.7.) ;) Wie Du an Deiner eigenen Ausgabe erkennst *fg* *SCNR*[/quote]
Test bestanden. :D

--------------------

Ein Unix Timestamp gibt die vergangenen Sekunden seit 1.1 1970 an. Von daher kann es schon einen 13 stelligen Wert geben. Irgendwan, weit, weit in der Zukunft...

Ansonsten wenn der Timestamp in der Vergangenheit liegt kann es kein Unix Timestamp mehr sein.

Wie wärs wenn du einfach mal in die DB schaust und schaust was für ein Typ das Feld ist. Vielleicht hilft das ja.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
sid burn
 2007-06-29 15:40
#77959 #77959
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Bzw.
Kann es sein das der Timestamp die Mikrosekunden zählt die seit dem 1.1.1970 vergangen sind? oO

Wenn man das nochmals durch 1000 Teilt, also die letzten 3 Stellen weg nimmt kommt da folgendes heraus.

Code: (dl )
1
2
sidburn@sid:~/perl/hex$ perl -e 'print scalar localtime(1183020463)'
Thu Jun 28 10:47:43 2007


Das haut ja so ungefähr mit deiner Datumsangabe hin...
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Rambo
 2007-06-30 19:10
#77960 #77960
User since
2003-08-14
803 Artikel
BenutzerIn

user image
jep so ist es, es sind Millisekunden. habe die abfrage entsprechend
geändert und lese nur die 10 stellen aus die ich benötige.

Datenbank Änderung in form von datum gleich richtig rein schreiben
geht nicht da ich nur lese Zugriff habe.

danke an all
gruss rambo
renee
 2007-06-30 19:24
#77961 #77961
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du musst auch nicht in die Datenbank schreiben, sondern die Umrechnung kann die Datenbank für Dich bei der Abfrage erledigen. z.B. (ungetestet) [sql]SELECT FROM_UNIXTIME(spalte_mit_timestamp, '%D.%M.%Y %h:%i:%s') FROM tabellenname[/sql]
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Rambo
 2007-07-02 13:51
#77962 #77962
User since
2003-08-14
803 Artikel
BenutzerIn

user image
Das kannte ich nicht. Vielen Dank für die Infos.

Meine Ansatz war folgender
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
while(my @row = $sth->fetchrow_array()) { 
my $took = $row[5];
my $ws = $row[3];
my $info = substr $row[6],0,5;
my $time = substr $row[9],0,10;

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($time);
$mon += 1;
$year += 1900;
my $time_stamp = sprintf "%s.%s.%s %s:%s:%s", $mday, $mon, $year, $hour, $min, $sec;

my @data = "$time_stamp $took ms for $info on $ws\n";
open(IN, ">>$local_time.txt") or die $!;
print IN @data;
close IN;
print "$time_stamp $took ms for $info on $ws\n";
}


Danke noch mal

gr. rambo
renee
 2007-07-02 14:07
#77963 #77963
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Rambo,02.07.2007, 11:51]
Code: (dl )
1
2
3
4
[...]
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($time);

[...]
[/quote]
Warum holst Du Dir mehr als Du brauchst?

Code (perl): (dl )
my ($sec, $min, $hour, $mday, $mon, $year) = (localtime($time))[0..5];


bzw.

Code (perl): (dl )
my ($sec, $min, $hour, $mday, $mon, $year) = localtime($time);


reicht doch völlig...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Rambo
 2007-07-02 16:41
#77964 #77964
User since
2003-08-14
803 Artikel
BenutzerIn

user image
Deine Lösung kannte ich zu dem Zeitpunkt noch nicht.
Aber jetzt kann ich sie ja einbinden. Ist wohl etwas saubere.

Danke Dir
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2007-06-28 12:35.