Zeitrechnungen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Maurizio555
Beiträge: 53
Registriert: 03.10.2004 10:00
Wohnort: BW

Zeitrechnungen

Beitrag von Maurizio555 »

Hallo!
Es gibt ein Algorythmus, der es erlaubt, ein bel. datum in eine eindeutige Nummer zu umwandeln. Diese Nummer erhöht sich jedes Jahr um EINS.
Ich weiß nicht mehr wie dieser Kalender (für math. und wissens. Zwecke)
heißt, ich glaube man nennt ihn auch "absoluter Kalender".
Mit dem Algorythmus kann man z.B. 19.09.2001 in so eine Nummer umwandeln, aber auch zurück, z.B. 3278954 in 10.12.2004.
Kennt jemand diesen Algorythmus, oder weiß wo ich ihn finden kann?
Ich hatte ihn mal in den VC20 Zeiten, hab's nicht aufgehoben :(
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
Benutzeravatar
Maurizio555
Beiträge: 53
Registriert: 03.10.2004 10:00
Wohnort: BW

Beitrag von Maurizio555 »

Habe das erste gefunden (von Datum zur Nummer), allerdings nicht andersherrum und nur in Pascal. Kann jemand was damit anfangen?
Was ist "trunc"?


y=Jahr (z.B. 2004 nicht 04). m=Monat. d=Tag.


if(m<3)then
begin
y:=y-1;
m:=m+12;
end;
a:=trunc(y/100);
b:=2-a+trunc(a/4);
numero:=trunc(365.25*(y+4716))+
trunc(30.6001*(m+1))+d+b-1524;
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

trunc() ist das selbe wie Int()
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Maurizio555
Beiträge: 53
Registriert: 03.10.2004 10:00
Wohnort: BW

Proceduren für Zeitrechnugen in PB

Beitrag von Maurizio555 »

Für alle, die auch Zeitrechnungen anstellen müßen:
Ich habe den Code in PB übersetzt.
Die erste Procedur erwartet tag,monat,jahr und gibt die Zahl des fortlaufenden Kalender zurück. Damit sind Zeitrechnungen möglich
(20.10.2003 minus 13.05.1973 wäre sonst schwer...).
Die zweite Procedur erwartet die gleichen Parameter und gibt den Tag zurück (montag o. dienstag o. ...).
Was jetzt fehlt ist eine Procedur, die die erste umkehrt, also sollte die Zahl des forlauf.Kalender erwarten und das normale Datum zurückgeben.
Hat jemand eine Idee? :roll:

Procedure.l FortlaufKal(d.b, m.w, y.w)
If m.w <3
y.w=y-1
m.w=m+12
EndIf
a.w=Int(y/100)
b=2-a+Int(a/4)
zahl.l=Int(365.25*(y+4716))+Int(30.6001*(m+1))+d+b-1524
ProcedureReturn zahl
EndProcedure


Procedure.s TagDerWoche(d.b, m.w, y.w)
If m.w <3
y.w=y-1
m.w=m+12
EndIf
a.w=Int(y/100)
b=2-a+Int(a/4)
zahl.l=Int(365.25*(y+4716))+Int(30.6001*(m+1))+d+b-1524
zahl=IMod(zahl,7)
Select zahl
Case 0
tag.s="Montag"
Case 1
tag.s="Dienstag"
Case 2
tag.s="Mittwoch"
Case 3
tag.s="Donnerstag"
Case 4
tag.s="Freitag"
Case 5
tag.s="Samstag"
Case 6
tag.s="Sonntag"
EndSelect
ProcedureReturn tag
EndProcedure
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

PB hat doch auch Datumsfunktionen ?

Code: Alles auswählen

Procedure.s TagDerWoche(Jahr.w,Monat.w,Tag.b,Stunde.l,Minute.l,Sekunde.l)
Day.s
Datum = Date(2004,10,21,0,0,0)
Tag = DayOfWeek(Datum)
Select Tag
 Case 0 : Day="Sonntag"
 Case 1 : Day="Montag "
 Case 2 : Day="Dienstag"
 Case 3 : Day="Mittwoch"
 Case 4 : Day="Donnerstag"
 Case 5 : Day="Freitag"
 Case 6 : Day="Samstag"
EndSelect
ProcedureReturn Day
EndProcedure
Debug TagDerWoche(2004,10,21,0,0,0)
PureBasic - Date
Einleitung
Die 'Date' (Datums) Library ermöglicht den Umgang mit Datums- und Zeitangaben von 1970 bis 2034.
Benutzt wird dabei der Unix-Typ (Anzahl der seit dem 1. Januar 1970 vergangenen Sekunden).


Befehlsübersicht:
------------------------------------------------------------------------------------
AddDate
Date
Day
DayOfWeek
DayOfYear
FormatDate
Hour
Minute
Month
ParseDate
Second
Year
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Maurizio555
Beiträge: 53
Registriert: 03.10.2004 10:00
Wohnort: BW

Beitrag von Maurizio555 »

Hallo!
Ja, PB hat auch Zeitfunktionen, diese sind aber (wie du selbst sagst) zeitlich begrenzt (1970 bis 2034).
Gut, die meisten Rechnungen dürften sich sowieso in diesen Rahmen bewegen, aber eben nur die Meisten.
Der fortlaufende Kalender reicht von ca. 5000 v.C bis über das Jahr 4000 n.C. ohne die Algorythmen ändern zu müßen.
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
Antworten