Anzahl der vergangenen Tage berechnen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Jean

Betreff: Anzahl der vergangenen Tage berechnen?

BeitragSo, Mai 21, 2006 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Zusammen

Ich meinem Spiel benötige ich die Anzahl der bereits vergangenen Tage bis zu einem bestimmten Datum. Da ich mich mit der Berechnung von Schaltjahren und solchen Dingen überhaupt nicht auskenne (und da mir das etwas zu komplex erscheint) hoffe ich, dass mir dabei jemand helfen kann.

Vielen Dank
Jan

Cardonic

BeitragSo, Mai 21, 2006 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Alle vier Jahre ist ein Schaltjahr. Bei einer Jahrhunderwende fällt das Schaltjahr aus, dafür gibt es alle 400 Jahre wieder eins.

Ich hoffe das hilft dir was.
Oder willst du wissen, wie man es berechnet ?

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
  • Zuletzt bearbeitet von Cardonic am So, Mai 21, 2006 23:43, insgesamt einmal bearbeitet

Kryan

BeitragSo, Mai 21, 2006 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
PHP unterstützt den julianischen Zeitkalender (<- hoffe richtig so)
Dabei geschieht erstmal die Umwandlung des heutigen Zeitpunkts in die julianische Zeitrechnung.
Dann wird das zu vergleichendende Datum ebenfalls dahinein "übersetzt".
Nun subrahiert man beide julianischen Zeitpunkte und wandelt das Ergebnis wieder in einen "normalen" Zeitpunkt um.

Ich weiß nicht, ob es einen Algo für BB dafür gibt Wink
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Spikespine

BeitragSo, Mai 21, 2006 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
vielleicht hilft dir das hier weiter: http://blitzbase.de/quellcode/datumarithmetik.bb
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

PowerProgrammer

BeitragSo, Mai 21, 2006 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt einen (anderen) Algo. Such mal in diesem anderen, englischen Forum. Ich glaube unter www.blitzbasic.com

Edit: Ich kann einfach net schnell genug antworten...

Jean

BeitragSo, Mai 21, 2006 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für die vielen Antworten.

Ich habe mit den Angaben von Cardonic eine Funktion geschrieben. Ich bin mir jedoch nicht ganz sicher, ob sie auch wirklich korrekt läuft. Ich wäre dankbar wenn sie mal jemand ausprobieren und überprüfen würde.

Code: [AUSKLAPPEN]
Print tage(2006,5,21)
WaitKey

Function tage(jahr,monat,tag)

schaltjahre = (jahr-1) / 4
schaltjahre = schaltjahre - (jahr-1) / 100
schaltjahre = schaltjahre + (jahr-1) / 400

tage = schaltjahre * 366
tage = tage + ((jahr-1) - schaltjahre) * 365

   For x = 1 To monat-1


      Select x

      Case 1
      tage = tage + 31

      Case 2
         If jahr Mod 4 = 0 Then
         tage = tage + 29
         Else
         tage = tage + 28
         EndIf

      Case 3
      tage = tage + 31

      Case 4
      tage = tage + 30

      Case 5
      tage = tage + 31

      Case 6
      tage = tage + 30

      Case 7
      tage = tage + 31

      Case 8
      tage = tage + 31

      Case 9
      tage = tage + 30

      Case 10
      tage = tage + 31

      Case 11
      tage = tage + 30

      Case 12
      tage = tage + 31

      End Select

   Next
   
tage = tage + tag-1
Return tage

End Function
  • Zuletzt bearbeitet von Jean am Mo, Mai 22, 2006 19:42, insgesamt einmal bearbeitet
 

Steffen

BeitragSo, Mai 21, 2006 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Cardonic hat Folgendes geschrieben:

Alle vier Jahre ist ein Schaltjahr. Bei einer Jahrhunderwende fällt das Schaltjahr aus, dafür gibt es aber jede Jahrtausendwende wieder eins.

Kleine Verbesserung:

Nicht alle 1000, sondern alle 400 Jahre ist trotzdem ein Schaltjahr.
>PC: Pentium III 750MHz, ATI Rage 128 mit 32Mb, Windows Me, Blitz3D 1.87
>Laptop: Pentium M 1,4GHz, 512 Mb DDR, ATI Mobility Radeon 9000 mit 64Mb DDR, Windows XP Home, Blitz3D 1.87

Cardonic

BeitragSo, Mai 21, 2006 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Oops Embarassed Du hast recht. Ich habs editiert. Danke

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Jean

BeitragMo, Mai 22, 2006 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für den Hinweis, habe meinen Code geändert.

Danke nochmals!
Jan

Kryan

BeitragDi, Mai 23, 2006 10:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
     Case 3
      tage = tage + 31

      Case 4
      tage = tage + 30

      Case 5
      tage = tage + 31

      Case 6
      tage = tage + 30

      Case 7
      tage = tage + 31

      Case 8
      tage = tage + 31

      Case 9
      tage = tage + 30

      Case 10
      tage = tage + 31

      Case 11
      tage = tage + 30

      Case 12
      tage = tage + 31


Kann man kürzer fassen (zwar nicht soo leicht zu verstehen, aber kürzer Very Happy ):

Code: [AUSKLAPPEN]
     
 Case 1,3,5,7,8,10,12
  tage=tage+31
 Case 4,6,9,11
  tage=tage+30
 Case 2
        If jahr Mod 4 = 0 Then
         tage = tage + 29
         Else
         tage = tage + 28
         EndIf
 End Select
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group