Thread timestamp problem: mit der funktion timelocal (5 answers)
Opened by galaxy at 2006-04-12 12:51

galaxy
 2006-04-12 12:51
#64752 #64752
User since
2006-04-03
30 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe eine Problem mit meiner Umrechnung von Daten zu Timestamps und umgekehrt.

Folgender Sachverhalt: Ich lese ein Datum aus meiner Datenbank aus. Dieses Datum liegt mit in Perl als ein String der Form DD-MM-YYYY vor. Das soll das Datum sein, ab dem später Dateien in die Datenbank geladen werden soll.

Anschliessend kommt eine while-Schleife, welche die entsprechenden Daten in die Datenbank laden soll.

Bis jetzt wird in dieser while-Schleife das Datum aber nur von Perl "simuliert" hochgezählt. Genau da liegt das Problem:

Anfangsdatum aus der Datenbank ist 17-10-2005. Dieses wandele ich so in den Timestamp um:
Code: (dl )
1
2
3
4
my ($day,$month,$year,) = split(/-/,$history_tradedate);
# Creates the timestamp(often have to write -1 because many date functions
# start with 0 for fist month, day etc.)
my $history_in_unixtime = timelocal("00","00","00",$day,$month-1,$year);


Des weiteren erzeuge ich mir den timestamp des heutigen Datums:

Jetzt folgt die while Schleife welche alle Daten bis heute laden soll: (vergelich timestamp heut und timestamp db)
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
while ($unix_today_minus_x > $history_in_unixtime)
{

hier kommt später code hin




 $history_tradedate = strftime ("%d-%m-%Y",localtime($history_in_unixtime));

 print "history datum: ".$history_tradedate."\n";


 ($day,$month,$year,) = split(/-/,$history_tradedate);
 print "day: ".$day."\n";

 # Creates the timestamp(often have to write -1 because many date functions
 # start with 0 for fist month, day etc.)
 $history_in_unixtime = timelocal("00","00","00",$day+1,$month-1,$year);

 $history_tradedate = strftime ("%d-%m-%Y",localtime($history_in_unixtime));
  print "history datum: ".$history_tradedate."\n";
} #


um jetzt testen zu können (und nicht in eine Endlosschleife zu laufen) will ich das Datum in der Schleife immer um einen Tag hochzählen. Jedoch taucht dabei folgendes Problem auf.

Das hochzählen funktioniert bis zum 31-10-2005 einwandfrei. Dachte er würde dann zum 01-11-2005 umspringen. Das macht er aber nicht, sondern springt zum 32ten und schreibt folgende Fehlermeldung:

Day 32 out of range 1 .. 31 ...

Kann mir jemand bei der Monats- bzw. jahresübergreifenden Umwandlung helfen?

Danke für Tipps\n\n

<!--EDIT|galaxy|1144832252-->

View full thread timestamp problem: mit der funktion timelocal