Der erste Tag vom Jahr berechnen
Hallo Zusammen,
Ich sollte den ersten Tag des Jahres wissen.
Input: Datum (DD.MM.JJJJ)
Output: Wochenzahl
Die eingabe habe ich bereits ich weiss auch welcher Tag das es ist und die Wochennummer hab ich im grössten Teil auch, aber:
Ich sollte wissen wieviele Tage ich dazurechnen muss, damit die Wochennummer stimmt wie kann ich das machen ?
Danke für die Hilfe !
Mit freundlichen Grüssen
Blueberry
[EDIT] Das richtige Thema ist etwas weiter unten da ich hier eigtl. nur quatsch geschrieben habe [/EDIT]
Ich sollte den ersten Tag des Jahres wissen.
Input: Datum (DD.MM.JJJJ)
Output: Wochenzahl
Die eingabe habe ich bereits ich weiss auch welcher Tag das es ist und die Wochennummer hab ich im grössten Teil auch, aber:
Ich sollte wissen wieviele Tage ich dazurechnen muss, damit die Wochennummer stimmt wie kann ich das machen ?
Danke für die Hilfe !
Mit freundlichen Grüssen
Blueberry
[EDIT] Das richtige Thema ist etwas weiter unten da ich hier eigtl. nur quatsch geschrieben habe [/EDIT]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 98534
Url: https://administrator.de/forum/der-erste-tag-vom-jahr-berechnen-98534.html
Ausgedruckt am: 10.04.2025 um 13:04 Uhr
17 Kommentare
Neuester Kommentar
???
Die Fragestellung ist nicht ganz klar.
Wenn ich mal den zum Teil widersprüchlichen Sinn der einzelnen Sätze beiseite lasse und mir aus den Stichworten eine Frage zusammenreimen soll geht es um folgendes Problem:
Dir ist nicht ganz klar ob die Woche, die vor dem 1 Januar anfängt und nach dem 1 Januar zuende ist die erste oder eventuell die 52/53 KW ist.
Ist diese Vermutung richtig oder nicht?
Wenn nicht, bitte eine verstehbare Frage stellen.
Die Fragestellung ist nicht ganz klar.
Ich sollte den ersten Tag des Jahres wissen.
Wie wäre es mit dem 1 Januar?Ich sollte wissen wieviele Tage ich dazurechnen muss, damit die
Wochennummer stimmt wie kann ich das machen ?
Was meinst Du mit dazurechnen damit die Wochennummer stimmt?Wochennummer stimmt wie kann ich das machen ?
Wenn ich mal den zum Teil widersprüchlichen Sinn der einzelnen Sätze beiseite lasse und mir aus den Stichworten eine Frage zusammenreimen soll geht es um folgendes Problem:
Dir ist nicht ganz klar ob die Woche, die vor dem 1 Januar anfängt und nach dem 1 Januar zuende ist die erste oder eventuell die 52/53 KW ist.
Ist diese Vermutung richtig oder nicht?
Wenn nicht, bitte eine verstehbare Frage stellen.
Das der Wochentag des 1. Januars gefragt war, daß stand nicht in Deinem Text drin.
Und es ist widersprüchlich, oder wie soll ich die zwei Aussagen
Und was mit Wochennummer gemeint ist, ist auch unklar, auch wenn ich inzwischen vermute, daß damit der Wochentag gemeint ist, also Montag=1, Dienstag=2 etc.
Aber das ist dem Text ohne Raterei nicht zu entnehmen.
Aber zurück zum technischen Problem:
Was Du dazuaddieren willst/sollst wird wohl niemand beantworten können, da niemand weiß nach welchem Algorithmus Du überhaupt den Wochentag ausrechnen willst.
Wenn man in Wikipedia schaut gibts da mehrere Varianten:
Doomsday Algorithmus, Gaußsche Wochentagsformel, Zellersche Kongruenz und jede rechnet sich anders.
Ohne genaue Infos was Dein Problem ist, werde zumindestens ich Dir nicht weiterhelfen können, Hellseherei ist nicht meine Stärke.
Und es ist widersprüchlich, oder wie soll ich die zwei Aussagen
Ich sollte den ersten Tag des Jahres wissen
undich weiss auch welcher Tag das es ist
Anders als sich widersprechend bezeichnen?Und was mit Wochennummer gemeint ist, ist auch unklar, auch wenn ich inzwischen vermute, daß damit der Wochentag gemeint ist, also Montag=1, Dienstag=2 etc.
Aber das ist dem Text ohne Raterei nicht zu entnehmen.
Aber zurück zum technischen Problem:
Was Du dazuaddieren willst/sollst wird wohl niemand beantworten können, da niemand weiß nach welchem Algorithmus Du überhaupt den Wochentag ausrechnen willst.
Wenn man in Wikipedia schaut gibts da mehrere Varianten:
Doomsday Algorithmus, Gaußsche Wochentagsformel, Zellersche Kongruenz und jede rechnet sich anders.
Ohne genaue Infos was Dein Problem ist, werde zumindestens ich Dir nicht weiterhelfen können, Hellseherei ist nicht meine Stärke.

Das ist Mathematik, mit der Programmiersprache hat das wenig zu tun...

Hallo miniversum,
deine Schreibselei ist für mich nicht verständlich (egal ob Batch oder VBS).
Die erste Jahreswoche ist mit mindestens 4 Wochentagen definiert. Darauf aufbauend kann ich doch jedes Datum errechnen.
Grüße, Steffen
deine Schreibselei ist für mich nicht verständlich (egal ob Batch oder VBS).
Die erste Jahreswoche ist mit mindestens 4 Wochentagen definiert. Darauf aufbauend kann ich doch jedes Datum errechnen.
Grüße, Steffen
Hallo miniversum und smerlin!
Eigentlich habt Ihr beide recht
- Mathematik ist es natürlich immer, nur nimmt VBS einem die Berechnung ab:
während (wie in Bibers Tutorial gezeigt) die Lösung in Batch "zu Fuß" erfolgen muss:
Anzumerken wäre noch, dass für VBS (defaultmäßig) Sonntag = 1 gilt (lässt sich aber durch den zusätzlichen Parameter "2" auch auf Montag ändern), während in der Batchvariante die 1 für Montag steht ...
Grüße
bastla
Eigentlich habt Ihr beide recht
WScript.Echo Weekday(#2008-1-1#)
@echo off & Setlocal
set /a yy=2008,mm=1,dd=1
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1
echo %dow%
Grüße
bastla
Hallo Blueberry!
Eigentlich müsste es genügen, 7 abzuziehen, solange das Ergebnis > 7 ist, also etwa:
Besser wäre die "Modulo"-Variante:
Abgekürzt lässt sich die erste Zeile auch als
schreiben, wodurch der "Modulo"-Operator "%" (oben in der Schreibweises für die Verwendung innerhalb eines Batches, daher verdoppelt) besser zu erkennen ist (siehe auch "set /?").
Abgesehen davon wäre der verwendete Algorithmus zu überdenken, wenn dieser tatsächlich nur für die Jahre 2000 bis 2014 funktioniert ...
Grüße
bastla
Eigentlich müsste es genügen, 7 abzuziehen, solange das Ergebnis > 7 ist, also etwa:
...
:Loop
if %Zahl% gtr 7 (
set /a Zahl-=7
goto :Loop
)
echo %Zahl%
set /a Zahl=%Zahl%%%7
if %Zahl%==0 set Zahl=7
set /a Zahl=Zahl%%7
Abgesehen davon wäre der verwendete Algorithmus zu überdenken, wenn dieser tatsächlich nur für die Jahre 2000 bis 2014 funktioniert ...
Grüße
bastla
Moin Blueberry,
Unter anderem deshalb, weil wir diesen Kalender noch gar nicht "seit dem Jahr 0" verwenden.
Und wenn weiterhin in derart unverständlichen Dimensionen wie bisher die F.D.P. gewählt wird, dann könnten wir, falls verkaufsoffene Sonntage und Midnight-Shopping nicht mehr ausreichen auch in regional begründeten Ausnahmefällen in ein paar Jahren auch am 32. Februar in den MediaMarkt. Warum soll der Staat immer so viel reglementieren?
Und da weiß noch kein Schwein, wie der Wochentag heißen wird (ich denke "Westerwoch", aber. man/frau weiss es nicht...).
Ein paar leicht verdauliche Algorithmen zur Kalenderproblematik gibt es bei der Uni Bonn.
Was ich damit sagen will: Niemand wird von Dir eine Wochentags/Kalenderwochenberechnung verlangen außerhalb des Zeitraumes 1900 -2100.
Hey, Wochentage davor hat nicht mal Johannes Heesters noch bewusst miterlebt, bestenfalls Maria Hellwig oder Thomas Gottschalk.
Und nach dem Jahr 2100 ist für Dich und auch Deinen Cheffe jeder Tag ein Sonntag - was willst Du da berechnen?
Ich würde an Deiner Stelle (falls sich kein reproduzierbarer Algorithmus ableiten lässt) wie schon einmal vorgeschlagen mit einer kleinen internen Tabelle arbeiten, in der für jedes "interessante" Jahr hinterlegt ist, wie viele Tage plus/minus korrigiert werden müssen bei einer KW-Ermittlung.
Schematisches Beispiel:
Grüße
Biber
Ich sollte ihn vom Jahre 0 bis zum Jahre 2014+Unendlich schreiben^^.
Das wird aus mehreren (praktischen und ganz banalen) Gründen nicht funktionieren.Unter anderem deshalb, weil wir diesen Kalender noch gar nicht "seit dem Jahr 0" verwenden.
Und wenn weiterhin in derart unverständlichen Dimensionen wie bisher die F.D.P. gewählt wird, dann könnten wir, falls verkaufsoffene Sonntage und Midnight-Shopping nicht mehr ausreichen auch in regional begründeten Ausnahmefällen in ein paar Jahren auch am 32. Februar in den MediaMarkt. Warum soll der Staat immer so viel reglementieren?
Und da weiß noch kein Schwein, wie der Wochentag heißen wird (ich denke "Westerwoch", aber. man/frau weiss es nicht...).
Ein paar leicht verdauliche Algorithmen zur Kalenderproblematik gibt es bei der Uni Bonn.
Was ich damit sagen will: Niemand wird von Dir eine Wochentags/Kalenderwochenberechnung verlangen außerhalb des Zeitraumes 1900 -2100.
Hey, Wochentage davor hat nicht mal Johannes Heesters noch bewusst miterlebt, bestenfalls Maria Hellwig oder Thomas Gottschalk.
Und nach dem Jahr 2100 ist für Dich und auch Deinen Cheffe jeder Tag ein Sonntag - was willst Du da berechnen?
Ich würde an Deiner Stelle (falls sich kein reproduzierbarer Algorithmus ableiten lässt) wie schon einmal vorgeschlagen mit einer kleinen internen Tabelle arbeiten, in der für jedes "interessante" Jahr hinterlegt ist, wie viele Tage plus/minus korrigiert werden müssen bei einer KW-Ermittlung.
Schematisches Beispiel:
1980: +2
1981: 0
1982: -3
...
...
2050: 1
Ich glaube ich habe es zum Laufen gebracht... Jetzt muss ich es nur noch Testen.
Bitte gib danach nochmal Feedback - der Beitrag wird ja durchaus interessiert mitgelesen.Grüße
Biber
Hallo Sandro!
Ist doch ein Batch ... 
... aber einen Algorithmus, der ohne die Tabelle auskommt, wirst Du sicher auch finden (und wenn Du in diesem Thread weiter nach oben schauen musst).
Grüße
bastla
Und wegen der Tabelle, dass darf ich nicht machen... Mein Lehrmeister will eine rein Batch-programmierte Lösung.
@echo off & setlocal
REM DATA 1980:+2
REM DATA 1981:+0
REM DATA 1982:-3
REM ...
set "Jahr=1982"
set Korr=
for /f "tokens=2 delims=:" %%i in ('findstr /c:"REM DATA %Jahr%:" %0') do set "Korr=%%i"
if defined Korr echo %Korr%
... aber einen Algorithmus, der ohne die Tabelle auskommt, wirst Du sicher auch finden (und wenn Du in diesem Thread weiter nach oben schauen musst).
Grüße
bastla