Zeit-Differenz errechnen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Zeit-Differenz errechnen

Beitrag von KatSeiko »

Hi... Ich hab bereits die Suche verwendet, aber irgendwie nichts passendes gefunden.

Ich möchte in ein Spiel einen Timer einbauen (XY Stunden, Minuten, Sekunden bis zum Zeitpunkt).
Mein erster Ansatz war leider nicht ganz passend, da PB offenbar das UNIX-Format für DateTime verwendet (Sekunden seit 1970).

Gibt es eine andere Methode, mit der man eventuell direkt Datum(Ziel) minus Datum(Aktuell) rechnen kann, das man dann einfach ausgeben kann (z.B. mit hour(), second() und so weiter)..?
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

na gerade die umrechung in UNIX bringt doch vorteile:

Beispiel:
Abstand von 14.3.2009 10:12 bis 21.3.2009 23:21

also: ab in UNIX: Date([Jahr, Monat, Tag, Stunde, Minute, Sekunde])
dann erhälst du
1237025520
1237677660

Die Differenz : 652140

Nun "Rückrechnen", also mit min=60s, h=60min, d=24h ...
also zB:

Code: Alles auswählen

Debug Int(Differenz/(60*60*24))  ; Tage
Debug Int(Differenz/(60*60)) % (24) ; Stunde
Debug Int(Differenz/(60)) % (60) ; Minute
Debug Int(Differenz) % (60) ; Sekunde
gibt dir dann
7 Tage
13 h
9 min
0 s
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Little John

Beitrag von Little John »

STARGÅTE hat geschrieben:na gerade die umrechung in UNIX bringt doch vorteile
So ist es. Solche "linearen Zeitformate" wie das von UNIX wurden ja zu dem Zweck erfunden, dass man damit bequem rechnen kann.

Übrigens wurde so eine Frage gerade vor 3 Tagen hier beantwortet. :-)

Gruß, Little John
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Ich möchte in ein Spiel einen Timer einbauen (XY Stunden, Minuten, Sekunden bis zum Zeitpunkt).
ein Spiel kann man pausieren, dann sollte der timer auch nicht weiterlaufen.

und je nach Genre kann man auch die Ablaufgeschwindigkeit ändern,
da sollte sich der Timer ebenfalls anpassen.
wer RiseOfNations oder andere Empire-Games spielt, weiß das,
ein Game mit einer "Spielzeit" von zwei stunden kann eine bis vier realstunden dauern,
je nachdem wie man zwischendrin schneller oder langsamer laufen läßt.


den Spiel-Timer muss man also auch selber zählen lassen, und nicht einfach an die Systemzeit hängen.

ob man dann den TimeStamp benutzen mag, oder sich eigene routinen schreibt, ist natürlich jedem seine sache.


ich persönlich wäre jetzt unsicher, wie ich den timestamp korrekt benutze für einen eigenen timer.

zwar ist die berechnung einer differenz auch nicht SO einfach ohne Timestamp,
aber man kann auch bei NULL anfangen, dann braucht man keine Differenz mehr....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Kaeru Gaman hat geschrieben:
Ich möchte in ein Spiel einen Timer einbauen (XY Stunden, Minuten, Sekunden bis zum Zeitpunkt).
ein Spiel kann man pausieren, dann sollte der timer auch nicht weiterlaufen.
Du weist ja nich um was für ein Spiel es sich handelt...
Evtl. is es ja was was auch weiterläuft wenn es garnich läuft, wenn du verstehst was ich mein^^
(\/) (°,,,°) (\/)
Little John

Beitrag von Little John »

KatSeiko schreibt ja, er will
direkt Datum(Ziel) minus Datum(Aktuell) rechnen
und das dann
(z.B. mit hour(), second() und so weiter)
ausgeben.

Aber solange man nicht weiß was er genau machen möchte, kann man wirklich nur spekulieren ...

Gruß, Little John
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Du weist ja nich um was für ein Spiel es sich handelt...

natürlich nicht, da war KatSeiko ja auch nicht gerade sehr mitteilsam, wie auch John schon anmerkte...
er hat ja nicht einmal beschrieben, was sein erster, angeblich gescheiterter Ansatz war,
nur dass es wohl daran gescheitert war, dass PB den UNIX-Timestamp benutzt.

.... was so fruchtbar ist wie gar keine Aussage, also Bundestagsreif.


aber
die Wahrscheinlichkeit dass ein Game pausiert werden kann und das
nicht mitgezählt werden soll ist wesentlich höher als das Gegenteil.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Beitrag von KatSeiko »

Nein, pausieren soll nicht möglich sein.. Ich bastel an einer Art Browser-Game, aufgebaut auf den Atomic Webserver.

Ich denke, ich hab raus, wie ich das löse, danke.
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

ha! Tja Kaeru, da hatte ich wohl den richtigen Riecher ^^
(\/) (°,,,°) (\/)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

achwas, Riecher... du hast nur ein Q in eine Ligusterhecke geworfen, nix weiter. Bild
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten