Wochentag errechnen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Dirk Knoop

Betreff: Wochentag errechnen

BeitragDo, Jul 29, 2004 7:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich habe drei Variablen:

tag=1
monat=12
jahr=1994

Wie kann ich anhand dieser ersten 3 Variablen den Wochentag berechnen ?

wochentag$="?"

Gruß,

Dirk
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist
www.torchance.de - ein etwas anderer Fußball-Manager

Freeman

BeitragDo, Jul 29, 2004 8:32
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

na da zum Beispiel der 27.01 nicht immer ein Montag ist oder ein Dienstag kann man das denke ich nicht so genau sagen, oder du nimmst dir ein Datum 1.1.1994 und legst fest das das ein Donnterstag wäre. Dann könntest du sämtliche andere Tage berechnen, aber sonst wäre das nicht möglich.

FrEeMaN

soli

BeitragDo, Jul 29, 2004 8:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich aus irgendeinem showcase,
weiss die Quelle jetzt aber nicht mehr.

Code: [AUSKLAPPEN]
   a = (14-monat)/12
   y = jahr - a
   m = monat + (12*a) - 2
   weekd = (tag+y+(y/4)-(y/100)+y/400+(31*m)/12) Mod 7
   

      Select weekd
         Case 0
            wochentag$="Sonntag"   
         Case 1
            wochentag$="Montag"   
         Case 2
            wochentag$="Dienstag"            
         Case 3
            wochentag$="Mittwoch"            
         Case 4
            wochentag$="Donnerstag"            
         Case 5
            wochentag$="Freitag"            
         Case 6
            wochentag$="Samstag"               
      End Select
   
solitaire

Kabelbinder

Sieger des WM-Contest 2006

BeitragDo, Jul 29, 2004 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, du könntest schonmal festlegen:

Heute am 29.07.04 ist Donnerstag, also war am 26.07.04 Montag

Dann bräuchtest du irgendetwas, dass dir errechnen kann, wieviele Tage das Angegebene Datum nach dem 26.07.04 war. Das kannst du dann in ner Variable speichern - nehmen wir mal a - und den Wochentag so ausrechnen:

Code: [AUSKLAPPEN]
a = 89 ;Tage nach dem 26.07.04
tag$ = "St. Nimmerleinstag"

Select a Mod 7
Case 0
tag$ = "Montag"
Case 1
tag$ = "Dienstag"
Case 2
tag$ = "Mittwoch"
Case 3
tag$ = "Donnertag"
Case 4
tag$ = "Freitag"
Case 5
tag$ = "Samstag"
Case 6
tag$ = "Sonntag"
End Select

Print tag$


Die Function, die dir sagen kann, vor wieviel tagen der 26.07.04 war könnte aber ziemlich knifflich zu programmieren sein, Dank den Monaten, die 31 Tage haben und dem Idioten der das Schaljahr erfunden hat Very Happy . Was solls, ich guck mal, ob ich da was hinbekomme.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Triton

BeitragDo, Jul 29, 2004 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
VERSCHOBEN nach allgemein.

TheShadow

Moderator

BeitragDo, Jul 29, 2004 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau auf Blitzbase - Datumarithmetik in Quellcodes....
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

D2006

Administrator

BeitragDo, Jul 29, 2004 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
wozu?

die Funktion, die Soli gepostet hat ist genial. Total kurz und mit Stichproben korrekt. Danke Soli

MfG
 

David

BeitragFr, Jul 30, 2004 8:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich hab auch noch ein Programm zu dem Thema:

Code: [AUSKLAPPEN]

Graphics 640, 480, 32
SetBuffer BackBuffer()

Dim mDayPerMonth( 12 )
Dim mWeekDays$( 7 )

Init()
Print CalcDayOfWeek( 2050, 11, 18 )

WaitKey

End

;Init()-------------------------------------------

Function Init()
   Restore dataSet
   
   For i = 0 To 11 : Read mDayPerMonth( i ) : Next
   For i = 0 To 7  : Read mWeekDays( i ) : Next
End Function

;Idiv()-------------------------------------------

Function idiv( nDivident, nDivisor )
   Return Floor( nDivident / nDivisor )
End Function

;LeapYear()---------------------------------------

Function LeapYear( nYear )
   Return ( ( nYear And 3 ) = 0 ) And ( ( ( nYear Mod 100 ) <> 0 ) Or ( ( nYear Mod 400 ) = 0 ) )
End Function

;DaysPerMonth()-----------------------------------

Function DaysPerMonth( nYear, nMonth )
   Local nResult = 0
   
   nMonth = nMonth - 1
   nResult = mDayPerMonth( nMonth )
   
   If ( nMonth = 1 ) Then
      If ( LeapYear( nYear ) ) nResult = nResult + 1
   End If
   
   Return nResult
End Function

;CheckDate----------------------------------------

Function CheckDate( nYear, nMonth, nDay )
   If ( nYear < 1582 ) Return 0
   If ( nYear = 1582 ) If ( nMonth < 10 ) Return 0
   If ( nYear = 1582 ) If ( nMonth = 10 ) If ( nDay < 15 ) Return 0
   If ( ( nMonth < 1 ) Or ( nMonth > 12 ) ) Return 0
   If ( ( nDay < 1 ) Or ( nDay > DaysPerMonth( nYear, nMonth ) ) ) Return 0
   
   Return 1
End Function

;CalcDate-----------------------------------------

Function JulDate( nYear, nMonth, nDay )
   Local nTmpYear, nTmpMonth, nResult = -1
   
   If ( nYear = 0 ) Return nResult
   
   If ( nMonth < 3 )
      nTmpYear = nYear - 1
      nTmpMonth = nMonth + 12
   Else
      nTmpYear = nYear
      nTmpMonth = nMonth
   End If
   
   nTmpMonth = nTmpMonth + 1
   nResult = nTmpYear * 365 + idiv( nTmpYear, 4 ) + idiv( ( nTmpMonth * 306 ), 10 ) + nDay + 1720995
   
   If ( nResult > 2299170 )
      nResult = nResult - idiv( nTmpYear, 100 ) + idiv( nTmpYear, 400 ) + 2
   Else If ( nResult > 2299160 )
      nResult = nResult - idiv( nTmpYear, 100 ) + idiv( nTmpYear, 400 ) + 12
   End If
   
   Return nResult
End Function

;CalcDayOfWeek------------------------------------

Function CalcDayOfWeek$( nYear, nMonth, nDay )
   If ( nYear < 100 )
      nYear = nYear + 1900
   End If
   
   nWeekDay# = JulDate( nYear, nMonth, nDay ) Mod 7
   If ( CheckDate( nYear, nMonth, nDay ) = 0 ) nWeekDay = 7
   
   Return mWeekDays( nWeekDay )
End Function

;DataSet------------------------------------------

.dataSet
Data 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
Data "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag", "Datum ungueltig"


grüße Smile
http://bl4ckd0g.funpic.de
 

lettorTrepuS

BeitragFr, Jul 30, 2004 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.
 

Ensign Joe

BeitragFr, Jul 30, 2004 9:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If y/4 schaltjahr = true
Wink
Ich habe jetzt eine Pommesbude aufgemacht am Münchner Hauptbahnhof.
Und da ich Herbert Görgens heiße, heißt diese Pommesbude
Herbert's Pommesbude Smile
 

David

BeitragFr, Jul 30, 2004 10:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Code: [AUSKLAPPEN]

Function LeapYear( nYear )
   Return ( ( nYear And 3 ) = 0 ) And ( ( ( nYear Mod 100 ) <> 0 ) Or ( ( nYear Mod 400 ) = 0 ) )
End Function


Schaltjahr? Is doch drinn. :]

@ShadowTurtle: Zum Code, das is nur eine Übersetzung von Javascript nach BlitzBasic. Evtl. hast du das da schonmal gesehen.

grüße
http://bl4ckd0g.funpic.de
 

lettorTrepuS

BeitragFr, Jul 30, 2004 10:23
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

D2006

Administrator

BeitragFr, Jul 30, 2004 12:29
Antworten mit Zitat
Benutzer-Profile anzeigen
@Ensign Joe
bei dir ist immer Schaltjahr

wenn dann
Code: [AUSKLAPPEN]

If Not y Mod 4 Then schaltjahr = True


aber selbst das ist zu ungenau, siehe Davids letzten Schnipsel.

MfG
 

Timo

BeitragFr, Jul 30, 2004 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieses Thema hatten wir auch schon mal im Informatikunterricht, war so ähnlich wie die von Soli, aber - warum funzt die überhaupt? Weis zufällig jemand warum dieses tolle Wochentagsberechner selbst beim Februar, in Schaltjahren und sonstwo funktioniert? Question
Gruß Timo
 

Dirk Knoop

BeitragFr, Jul 30, 2004 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Danke für eure Antworten!
Ich habe die Funktionen noch nicht ausprobiert - habe leider heute keine Zeit.
Werde ich aber am Sonntag machen.

Danke noch einmal!

Gruß,

Dirk
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist
www.torchance.de - ein etwas anderer Fußball-Manager

soli

BeitragFr, Jul 30, 2004 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Weis zufällig jemand warum dieses tolle Wochentagsberechner selbst beim Februar, in Schaltjahren und sonstwo funktioniert?


Mathmatik?
Very Happy
solitaire
 

David

BeitragFr, Jul 30, 2004 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Würd sagen er soll sich mal die Formel genau ansehen und vorallem versuchen nachzuvollziehen was da gemacht wird. Dann wird er schon rausbekommen warum das alles so schön funktioniert. Wink

grüße
http://bl4ckd0g.funpic.de

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group