Hi,
ich möchte über ein Form eine Startzeit und eine Endzeit eingeben. Beide Werte sollen dann in die Unixzeit konvertiert werden und kommen danach in eine DB (was hierbei aber erstmal egal ist).
Ich habe dafür jeweils ein DateTimePicker und zwei Edit-Felder (Eingabefelder für die Stunden und Minuten) genommen.
So sieht die ButtonClick-Routine aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm15.Button2Click(Sender: TObject); var time1,time2,date1,date2,test: TDateTime; uxt1,uxt2,diff: integer; begin time1 := StrToTime(Edit1.Text + ':' + Edit2.Text + ':00'); date1 := DateTimePicker1.Date; uxt1 := DateTimeToUnix(date1 + time1) - 36851;
time2 := StrToTime(Edit3.Text + ':' + Edit4.Text + ':00'); date2 := DateTimePicker2.Date; uxt2 := DateTimeToUnix(date2 + time2) - 36851;
diff := uxt2 - uxt1 -7; test := UnixToDateTime(uxt1);
ShowMessage(IntToStr(diff) + '-' + IntToStr(uxt1) + '-' + DateTimeToStr(test)); end; |
Nun habe ich zwei Probleme, die ich nicht verstehe:
a) Wenn ich die Differenz zwischen unixzeit1 und 2 berechne und bei beiden Werten das gleiche (z.B. 01.01.2004 12:00) eingegeben habe, ist die Differenz nicht 0 sondern 7. Wie kann das sein?
b) Wenn ich das Datuma 01.09.2004 00:00 eingebe, es in Unixzeit umrechnen lasse und dann wieder zurück in DateTime kommt ein Versatz von genau 10h,14min und 11sec raus. Deswegen auch die 36851 oben im Quellcode.
Ist das normal oder mache ich einen Denkfehler?
Kann jemand weiterhelfen?
Danke und Gruß
otelo