perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 19
Click for quality!




12.02.2012 / 04:11

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragProblem mit Uhrzeit
Seitenanfang
Hallo!

Ich hole mir mit folgenden Code das Datum und Uhrzeit des Endes einer eBay Auktion:

my ($day, $month, $year, $hour, $min, $sec) = $endtime =~ /(\d\d).(\d\d).(\d\d).*?(\d\d)\:(\d\d)\:(\d\d).*?MESZ/;

Das klappt auch.

Mit folgenden Code rechne ich dann Datum in Sekunden um:

$endtime = timelocal($sec,$min,$hour,$day,$month,$year);

18.06.06 21:00:00 MESZ ergibt 1153249200 Sekunden.

Ein

$time = time

ergibt 1150656707 = 20:55.

Die Differenz der beiden Werte ergibt 2592493 was umgerechnet ca. 30 Tage sind. Das kann aber nicht stimmen da in der Tat nur 5 Minuten zw. den beiden Daten liegen.

Wer kann mir sagen, wo hier mein Fehler liegt?

Datum: 18.06.2006-20:57

Beitragre: Problem mit Uhrzeit
Seitenanfang
Es sind 30 Std. nicht 30 Tage.

Datum: 18.06.2006-21:00

Beitragre: Problem mit Uhrzeit
Seitenanfang
Sind doch Tage :)

Datum: 18.06.2006-21:27

Beitragre: Problem mit Uhrzeit
Seitenanfang
Ich hab jetzt zwar den Fehler entdeckt, kann ihn mir aber nicht erklären.

#!/usr/bin/perl -w

use strict;
use Time::Local;

my $endtime = "(23.06.06 10:13:33 MESZ)";

my ($day, $month, $year, $hour, $min, $sec) = $endtime =~ /(\d\d).(\d\d).(\d\d).*?(\d\d)\:(\d\d)\:(\d\d).*?MESZ/;

$endtime = timelocal($sec,$min,$hour,$day,$month,$year);
my $time = localtime($endtime);
print "$time\n";

$time = Sun Jul 23 10:13:33 2006

Aber wieso um Himmels willen steht hier Jul und nicht Jun? Will da schon jemand verfrüht in die Sommerferien? :)

Datum: 18.06.2006-21:30

Beitragre: Problem mit Uhrzeit
Seitenanfang
Ich habe die Lösung gefunden.

"Wenn Sie Monats- und Jahreswerte an timelocal übergeben, wird erwartet, daß diese sich im gleichen Wertebreich bewegen wie bei localtime. Das heißt, Monate beginnen bei 0, und bei den Jahren ist der Wert 1900 abgezogen."

Die Lösung:

$endtime = timelocal($sec,$min,$hour,$day,$month-1,$year);

rüdiger

Datum: 18.06.2006-22:03

-






-
-