Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Now + 60 = Fehler? (https://www.delphipraxis.net/166164-now-60-%3D-fehler.html)

MiKaEr 1. Feb 2012 14:02


Now + 60 = Fehler?
 
ich versuche gerade auf die aktuelle zeit 60 sekunden zu addieren. das funktioniert aber nicht.
die uhrzeit stimmt. aber das datum verschiebt sich um exakt zwei monate nach vorne:
Delphi-Quellcode:
FormatDateTime('dd.mm.yyyy hh:nn', now + iNR); // iNR: Integer; der inhalt ist gleich "60"

Neutral General 1. Feb 2012 14:04

AW: Now + 60 = Fehler?
 
Hallo,

Machs doch einfach so:

Delphi-Quellcode:
uses
  DateUtils;

FormatDateTime('dd.mm.yyyy hh:nn', IncSecond(now,iNR));

guinnes 1. Feb 2012 14:06

AW: Now + 60 = Fehler?
 
Zitat:

Zitat von MiKaEr (Beitrag 1148706)
ich versuche gerade auf die aktuelle zeit 60 sekunden zu addieren. das funktioniert aber nicht.
die uhrzeit stimmt. aber das datum verschiebt sich um exakt zwei monate nach vorne:
Delphi-Quellcode:
FormatDateTime('dd.mm.yyyy hh:nn', now + iNR); // iNR: Integer; der inhalt ist gleich "60"

Du zählst ja auch 60 Tage dazu. Unter Windows ist TDateTime ein Double, der Anteil vor dem Komma sind die Tage, der nach dem Komma die Uhrzeit

Sir Rufo 1. Feb 2012 14:06

AW: Now + 60 = Fehler?
 
Manchmal hilft es einfach mal die Dokumentation zu lesen Delphi-Referenz durchsuchenTDateTime

Bernhard Geyer 1. Feb 2012 14:09

AW: Now + 60 = Fehler?
 
Zitat:

Zitat von MiKaEr (Beitrag 1148706)
ich versuche gerade auf die aktuelle zeit 60 sekunden zu addieren. das funktioniert aber nicht.
die uhrzeit stimmt. aber das datum verschiebt sich um exakt zwei monate nach vorne:
Delphi-Quellcode:
FormatDateTime('dd.mm.yyyy hh:nn', now + iNR); // iNR: Integer; der inhalt ist gleich "60"

Funktioniert nicht weil du falsche Annahmen triffst.
+ 60 bedeutet das du 60 Tage weiterzählst. 60 Sekunden wären 60 * 1 / (24 (Stunden) * 60 (Minuten) * 60 (Sekunden))

Du hast hier nicht das C-Datumsformat vor dir das Sekunden seit 1970 zählt.

Grrr. Zu spät. Und wo war der rote Balken?

MiKaEr 1. Feb 2012 14:13

AW: Now + 60 = Fehler?
 
Zitat:

Du hast hier nicht das C-Datumsformat vor dir das Sekunden seit 1970 zählt.
das habe ich gerade auch bemerkt. bei delphi liegt das startdatum weiter zurück (1800er jahrgang).

himitsu 1. Feb 2012 14:23

AW: Now + 60 = Fehler?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1148710)
Funktioniert nicht weil du falsche Annahmen triffst.
+ 60 bedeutet das du 60 Tage weiterzählst. 60 Sekunden wären 60 * 1 / (24 (Stunden) * 60 (Minuten) * 60 (Sekunden))

Zur Abwehr von Rechenfehlern gibt es auch Konstanten ala Delphi-Referenz durchsuchenSecsPerDay.

Neutral General 1. Feb 2012 14:29

AW: Now + 60 = Fehler?
 
Zitat:

Zitat von himitsu (Beitrag 1148714)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1148710)
Funktioniert nicht weil du falsche Annahmen triffst.
+ 60 bedeutet das du 60 Tage weiterzählst. 60 Sekunden wären 60 * 1 / (24 (Stunden) * 60 (Minuten) * 60 (Sekunden))

Zur Abwehr von Rechenfehlern gibt es auch Konstanten ala Delphi-Referenz durchsuchenSecsPerDay.

... Falls sich die Anzahl der Sekunden pro Tag irgendwann mal ändern sollte! :lol:

DeddyH 1. Feb 2012 14:39

AW: Now + 60 = Fehler?
 
Wohl eher, falls der Entwickler zu blöd zum Rechnen ist ;)

Bernhard Geyer 1. Feb 2012 14:42

AW: Now + 60 = Fehler?
 
Zitat:

Zitat von Neutral General (Beitrag 1148716)
... Falls sich die Anzahl der Sekunden pro Tag irgendwann mal ändern sollte! :lol:

Dann lebe ich schon lange nicht mehr. Erstmal will man ja die Schaltsekunde wieder abschaffen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz