Hallo,
wahrscheinlich habe ich nur Tomaten auf den Augen, aber ich habe weder im
Forum, noch in der Hilfe die Umkehrfunktion zu date() gefunden.
Beispiel 1:
der 01.01.1990 00:00:00 Uhr ergibt
date(1990,01,01,00,00,00)= 631152000
Beispiel 2: Date(1994,05,20,15,00,00)= 769446000
aber: wie bekomme ich aus 769446000 den 20.05.1994 15:00:00 Uhr heraus ??
Grund für die Frage:
Ich möchte in einem Spiel den Kalender mitlaufen lassen.
Startdatum ist der 1.1.1980 eine spielstunde dauert 200ms => 1Tag=4800ms=4,8 sek
real hat ein tag 86400 => das spiel läuft 86400/4,80 =18000 mal schneller als die Realität
wenn ich dann über elapsedmilliseconds die Zeit messe kann ich also gut die Datumswerte hochzählen. Daher die Frage: wann ist 852684000 ?
danke fürs Lesen
Gelöst: Datumsfunktionen
Gelöst: Datumsfunktionen
Zuletzt geändert von Diogenes am 22.01.2017 21:20, insgesamt 1-mal geändert.
Re: Datumsfunktionen
FormatDate(Maske$, Datum)
Rest mit "F1"
Rest mit "F1"
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Datumsfunktionen
Danke für Deine Antwort mk-soft aber mein problem ist nicht das Formatieren, sindern das Berechnen.
date(852684000) funktioniert leider nicht. Das habe ich natürlich als Erstes ausprobiert.
vielleicht habe ich mich mißverständlich ausgedrückt:
Text$=FormatDate(%dd.%mm.%yyyy,Date(769446000))
Debug text$
funktioniert nicht
laut Hilfe: Datumswert = Date([Jahr, Monat, Tag, Stunde, Minute, Sekunde])
ich will aber gerade die umgekehrte Funktion
text $=formatdate(format, date(datumswert))
date(852684000) funktioniert leider nicht. Das habe ich natürlich als Erstes ausprobiert.
vielleicht habe ich mich mißverständlich ausgedrückt:
Text$=FormatDate(%dd.%mm.%yyyy,Date(769446000))
Debug text$
funktioniert nicht
laut Hilfe: Datumswert = Date([Jahr, Monat, Tag, Stunde, Minute, Sekunde])
ich will aber gerade die umgekehrte Funktion
text $=formatdate(format, date(datumswert))
Re: Datumsfunktionen
Code: Alles auswählen
Text$=FormatDate("%dd.%mm.%yyyy",769446000)
Debug Text$
PB v5.72 x86/x64
Windows 10 Pro 64bit
Windows 10 Pro 64bit
Re: Datumsfunktionen
Wow, so einfach war das.
Ich habe jetzt den ganzen Sonntag daran 'rumprobiert.
Danke die sehr -chris-
Ich war immer der Meinung das Formatdate würde nur die Formatierung übernehmen,
daher habe ich immer das date() da mit eingebaut.
ich sag's ja "Tomaten auf den Augen"
schönen Abend noch
Ich habe jetzt den ganzen Sonntag daran 'rumprobiert.
Danke die sehr -chris-
Ich war immer der Meinung das Formatdate würde nur die Formatierung übernehmen,
daher habe ich immer das date() da mit eingebaut.
ich sag's ja "Tomaten auf den Augen"
schönen Abend noch
Re: Datumsfunktionen
Du missverstehst da was. Die Datumsfunkionen in PureBasic wird auch gerne woanders als Timestamp bezeichnet. https://de.wikipedia.org/wiki/Zeitstempel
Sie ist ein Integerwert (und kein eigenes Datenformat) und ist eine Sekundenanzeige. Wenn du ein Tag raufrechnen willst, geht das einfach deine Timestamp mit 24 (Stunden) * 60 (Minuten) * 60 (Sekunden) addieren. Auch wichtig, der Startwert ist der 01.01.1970. Du kannst damit kein Datum davor erfassen. Hintergrund ist hier einfach Historisch begründet, man wollte damit die Systemzeit erfassen fürs Dateisystem, Logs etc. nicht Historische Ereignisse aufzählen. Wobei Zeit und die Messung eine Geschichte für sich ist. Gab genügen Reformen in der Geschichte, die Regional sogar noch unterschiedlich durchgeführt wurden.
du willst also alle 200 ms eine Tag dazuaddieren?
Dann ist die Formel
Zeit=Zeit + (24*60*60) * verstrichene Millisekunden / 200
Zeit würde ich in Format Quads speichern. Bei Integer unter 32Bit kommt es sonst 2038 zu einen Überlauf.
Sind die PB-Funktionen eigentlich mittlerweile dahingehen abgesichert?
p.s.: Erinnert ihr euch an den Millenium-Bug? 2038 wird aus diesen Grund ein neuer "Crash" möglich, wo alle veralteten Linux-Systeme aussteigen.
Sie ist ein Integerwert (und kein eigenes Datenformat) und ist eine Sekundenanzeige. Wenn du ein Tag raufrechnen willst, geht das einfach deine Timestamp mit 24 (Stunden) * 60 (Minuten) * 60 (Sekunden) addieren. Auch wichtig, der Startwert ist der 01.01.1970. Du kannst damit kein Datum davor erfassen. Hintergrund ist hier einfach Historisch begründet, man wollte damit die Systemzeit erfassen fürs Dateisystem, Logs etc. nicht Historische Ereignisse aufzählen. Wobei Zeit und die Messung eine Geschichte für sich ist. Gab genügen Reformen in der Geschichte, die Regional sogar noch unterschiedlich durchgeführt wurden.
du willst also alle 200 ms eine Tag dazuaddieren?
Dann ist die Formel
Zeit=Zeit + (24*60*60) * verstrichene Millisekunden / 200
Zeit würde ich in Format Quads speichern. Bei Integer unter 32Bit kommt es sonst 2038 zu einen Überlauf.
Sind die PB-Funktionen eigentlich mittlerweile dahingehen abgesichert?
p.s.: Erinnert ihr euch an den Millenium-Bug? 2038 wird aus diesen Grund ein neuer "Crash" möglich, wo alle veralteten Linux-Systeme aussteigen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Re: Datumsfunktionen
Danke für Deine Erklärung gpi,
auch wenn nicht ein Tag 200 ms sind sondern 1 stunde
Das hatte ich auch in etwa so vor. Daher hatte ich ja als startdatum den 1.1.1980 00:00 Uhr
angesetzt. Diesen Wert kann ich ja über date(1980,01,01,0,0,0) ermitteln.
Danach wird dann anhand der vergangenen msek weitergerechnet. Das hätte man
auch alles programmtechnisch umrechnen können, aber dann hätte man entsprechende Prozeduren
für 28, 29, 30, 31 Tage pro Monat einbauen müssen, daher der Gedanke das über date() ausrechnen
zu lassen .
auch wenn nicht ein Tag 200 ms sind sondern 1 stunde

Das hatte ich auch in etwa so vor. Daher hatte ich ja als startdatum den 1.1.1980 00:00 Uhr
angesetzt. Diesen Wert kann ich ja über date(1980,01,01,0,0,0) ermitteln.
Danach wird dann anhand der vergangenen msek weitergerechnet. Das hätte man
auch alles programmtechnisch umrechnen können, aber dann hätte man entsprechende Prozeduren
für 28, 29, 30, 31 Tage pro Monat einbauen müssen, daher der Gedanke das über date() ausrechnen
zu lassen .