Wochentag ermitteln
06.04.2011
16:48:08 Uhr2697 Aufrufe
10 Antworten
16:48:08 Uhr
10 Antworten
Noch nicht bewertet
Hallo,
da ich hier beim Erstellen meines Sharepoint Backup Batches viel gelesen und gelernt habe, wollte ich nun auf diesem Wege einen Teil davon zur Verfügung stellen.
Das Script ermittelt den aktuellen Wochentag auf der Kommandozeile und sollte bis ins jahr 2099 passen, da ich nur einfche schaltjahr-Überprüfung genutzt habe. Natürlich freue ich mich auch über Verbesserungsvorschläge und anderweitige Kommentare!
da ich hier beim Erstellen meines Sharepoint Backup Batches viel gelesen und gelernt habe, wollte ich nun auf diesem Wege einen Teil davon zur Verfügung stellen.
Das Script ermittelt den aktuellen Wochentag auf der Kommandozeile und sollte bis ins jahr 2099 passen, da ich nur einfche schaltjahr-Überprüfung genutzt habe. Natürlich freue ich mich auch über Verbesserungsvorschläge und anderweitige Kommentare!
01.
@echo off 02.
:: ################## 03.
:: datum ermitteln 04.
:: und d,m,y zuweisen 05.
:: ################## 06.
date /T > d.txt 07.
for /f "tokens=1,2,3 delims=. " %%i in (d.txt) do set /a y=%%k, m=%%j, d=%%i 08.
del d.txt 09.
:: ######################## 10.
:: variablen initialisieren 11.
:: ######################## 12.
set /a c=0 13.
set /a days=0 14.
setlocal EnableDelayedExpansion 15.
:: ########################## 16.
:: Monate vom Jahresanfang 17.
:: bis heute zusammenaddieren 18.
:: ########################## 19.
for %%i in (31,28,31,30,31,30,31,31,30,31,30,31) do ( 20.
set /a c=!c!+1 21.
if %m% GTR !c! (set /a days=!days!+%%i) 22.
set days=!days! 23.
) 24.
:: ######################## 25.
:: wenn Februar vorüber ist 26.
:: und ein Schaltjahr +1 27.
:: ######################## 28.
if %y%%%4==0 ( 29.
if %m% GTR 2 (set /a days=!days!+1)) 30.
:: ################################# 31.
:: Tage vom Monatsanfang aufaddieren 32.
:: ################################# 33.
set /a days=!days!+%d% 34.
:: ################################ 35.
:: Wochentag in b schreiben 36.
:: Referenztag ist der 31.12.2000 (Sonntag) 37.
:: 0 = Sonntag, 1 = Montag .... usw 38.
:: ################################ 39.
set /a b=(((%y%-2001)/4+(%y%-2001)*365)+%days%)%%7 40.
if %b%==0 echo Es ist Sonntag, der %d%.%m%.%y% 41.
if %b%==1 echo Es ist Montag, der %d%.%m%.%y% 42.
if %b%==2 echo Es ist Dienstag, der %d%.%m%.%y% 43.
if %b%==3 echo Es ist Mittwoch, der %d%.%m%.%y% 44.
if %b%==4 echo Es ist Donnerstg, der %d%.%m%.%y% 45.
if %b%==5 echo Es ist Freitag, der %d%.%m%.%y% 46.
if %b%==6 echo Es ist Samstag, der %d%.%m%.%y% 47.
endlocal
bastla schreibt am 06.04.2011 um 17:07:58 Uhr
Hallo MHI-LCT und willkommen im Forum!
Schön, dass Du gleich mit einem Tipp als Forumsmitglied "einsteigst"
- auch wenn es zum Thema schon diverse Ansätze zu finden gibt (zB hier und natürlich in Bibers einschlägigem Tutorial Workshop Batch for Runaways - Part III - Datums- und Zeitvariablen im Batch) ...
Eine Fastenzeit-Version hätte ich auch noch zu bieten:
- und da Du ja auch nach Verbesserungsvorschlägen fragtest: einen habe ich hier eingebaut. 
Noch einer: Anstelle von
könntest Du kürzer
schreiben ...
Grüße
bastla
Schön, dass Du gleich mit einem Tipp als Forumsmitglied "einsteigst"
Eine Fastenzeit-Version hätte ich auch noch zu bieten:
01.
set G=%temp%\GetWeekDayName.vbs 02.
>%G% echo WScript.Echo WeekDayName(WeekDay(Date)) 03.
for /f %%i in ('cscript //nologo %G%') do set "WTag=%%i" 04.
del %G% 05.
for /f "tokens=1-3 delims=." %%i in ('date /t') do echo Es ist %WTag%, der %%i.%%j.%%kNoch einer: Anstelle von
set /a c=!c!+1set /a c+=1Grüße
bastla
rubberman schreibt am 09.04.2011 um 16:01:59 Uhr
Hallo Zusammen,
darf ich mitspielen ?
Kalenderelement per Batch:
Das Ding ist natürlich zum Einschlafen langsam, da ich versucht habe mich auf Batch pur zu beschränken ...
Grüße
rubberman
<edit>
@Biber
Danke für die Blumen
Bei der Gelegenheit habe ich die Variablen in Zeile 100 noch gerade gerückt.
</edit>
darf ich mitspielen ?
Kalenderelement per Batch:
01.
@echo off &setlocal enabledelayedexpansion &color f1 &title Kalender 02.
03.
:: erster Tag der Woche (0 für Montag ... 6 für Sonntag) 04.
set /a fDoW=0 05.
06.
:: Variablen vordefinieren 07.
set /a n=0 08.
for %%a in (Mo Di Mi Do Fr Sa So) do ( 09.
set "wd_!n!=%%a" 10.
set /a n+=1 11.
) 12.
set /a n=0 13.
for %%a in ( 14.
Januar Februar Maerz April Mai Juni Juli August September Oktober November Dezember 15.
) do ( 16.
set /a n+=1 17.
set "m_!n!=%%a" 18.
set "nm_%%a=!n!" 19.
) 20.
21.
:: hole Jahr, Monat und Tag des derzeitigen Datums 22.
call :GetDate cyy cmm cdd 23.
set /a yy=cyy,mm=cmm,dd=cdd 24.
25.
:mainloop 26.
27.
:: hole die Anzahl Tage des Monats 28.
call :DaysPerMonth %yy% %mm% DpM 29.
30.
:: hole den Wochentag des ersten Tags im Monat 31.
call :DayOfWeek %yy% %mm% 1 %fDoW% DoW 32.
33.
:: Variable vordefinieren 34.
set /a neededCells=DpM+DoW 35.
36.
:: hole den Monatsname 37.
call :MonthName %mm% mmmm 38.
39.
:: erstelle den Inhalt der Kalendertabelle 40.
set "header=%mmmm% %yy% " 41.
set "header=%header:~,32%" 42.
43.
for /l %%a in (1,1,7) do ( 44.
call :createWeekday %%a wd 45.
set "w_%%a=!wd!" 46.
) 47.
48.
for /l %%a in (1,1,42) do ( 49.
call :createCell %%a cell 50.
set "c_%%a=!cell!" 51.
) 52.
53.
54.
:choiceloop 55.
56.
:: Kalendertabelle ausgeben 57.
cls 58.
echo( 59.
echo( 60.
echo( ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 61.
echo( ³ ³ 62.
echo( ³ %header%³ 63.
echo( ³ ³ 64.
echo( ÃÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄÂÄÄÄÄ´ 65.
echo( ³%w_1%³%w_2%³%w_3%³%w_4%³%w_5%³%w_6%³%w_7%³ 66.
echo( ÃÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄ´ 67.
echo( ³%c_1%³%c_2%³%c_3%³%c_4%³%c_5%³%c_6%³%c_7%³ 68.
echo( ³%c_8%³%c_9%³%c_10%³%c_11%³%c_12%³%c_13%³%c_14%³ 69.
echo( ³%c_15%³%c_16%³%c_17%³%c_18%³%c_19%³%c_20%³%c_21%³ 70.
echo( ³%c_22%³%c_23%³%c_24%³%c_25%³%c_26%³%c_27%³%c_28%³ 71.
echo( ³%c_29%³%c_30%³%c_31%³%c_32%³%c_33%³%c_34%³%c_35%³ 72.
echo( ³%c_36%³%c_37%³%c_38%³%c_39%³%c_40%³%c_41%³%c_42%³ 73.
echo( ÀÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÁÄÄÄÄÙ 74.
echo( 75.
echo( 76.
echo(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 77.
78.
:: choice 79.
set "month=" 80.
echo Springe zu Monat M oder MMMM oder M YYYY oder MMMM YYYY 81.
echo r (Reset), e (Exit) 82.
echo( 83.
set /p "month=Eingabe: " 84.
if not defined month goto choiceloop 85.
if /i "%month:~,1%"=="e" goto :eof 86.
if /i "%month:~,1%"=="r" set "month=%cmm% %cyy%" 87.
call :change %month% &goto mainloop 88.
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ End Of Main ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 89.
90.
91.
:GetDate yOut mOut dOut 92.
:: Output: Jahr, Monat und Tag ohne vorangestellte Nullen 93.
setlocal 94.
for /f "tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v iDate') do set "iDate=%%a" 95.
for /f "tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v sDate') do set "sDate=%%a" 96.
for /f "tokens=2" %%i in ("%date%") do set "date=%%i" 97.
for /f "tokens=1-3 delims=%sDate%" %%a in ("%date%") do ( 98.
if %iDate%==0 set /a mm=100%%a%%100,dd=100%%b%%100,yy=10000%%c%%10000 99.
if %iDate%==1 set /a dd=100%%a%%100,mm=100%%b%%100,yy=10000%%c%%10000 100.
if %iDate%==2 set /a yy=10000%%a%%10000,mm=100%%b%%100,dd=100%%c%%100 101.
) 102.
endlocal &set "%~1=%yy%" &set "%~2=%mm%" &set "%~3=%dd%" 103.
goto :eof 104.
105.
:DaysPerMonth yyyyIn mmIn numOut 106.
:: Output: Anzahl Tage des übergebenen Monats. 107.
setlocal 108.
set /a yy=10000%~1%%10000,mm=100%~2%%100 109.
if %yy% lss 100 set /a yy+=2000 110.
set /a jd=31-32075+1461*(yy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yy+4900+(mm-14)/12)/100)/4 111.
set /a l=jd+68569,n=4*l/146097,l=l-(146097*n+3)/4,i=4000*(l+1)/1461001,l=l-1461*i/4+31,j=80*l/2447,k=l-2447*j/80,x=31-k 112.
if %x%==0 set "x=31" 113.
endlocal &set "%~3=%x%" 114.
goto :eof 115.
116.
:DayOfWeek yyyyIn mmIn ddIn firstDayOfWeekIn numOut 117.
:: für Input: firstDayOfWeekIn ist 0 wenn Montag ... 6 wenn Sonntag 118.
:: Output: 0 (erster Tag der Woche) ... 6 (letzter Tag der Woche) 119.
setlocal 120.
set /a yy=10000%~1%%10000,mm=100%~2%%100,dd=100%~3%%100 121.
if %yy% lss 100 set /a yy+=2000 122.
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,DoW=153*m+2,DoW=DoW/5+dd+y*365+y/4-y/100+y/400-2472630-%~4,DoW%%=7 123.
endlocal &set "%~5=%DoW%" 124.
goto :eof 125.
126.
:MonthName mmIn mmmmOut 127.
:: Output: Monatsname (String) des übergebenen Monats (Zahl). 128.
setlocal enabledelayedexpansion 129.
set /a mm=100%~1%%100 130.
set "mmmm=!m_%mm%!" 131.
endlocal &set "%~2=%mmmm%" 132.
goto :eof 133.
134.
:createWeekday 135.
setlocal enabledelayedexpansion 136.
:: Erstellt den Wochentag abhängig von der fDoW Einstellung. 137.
set /a x=%~1+fDoW-1,x%%=7 138.
set "wd=!wd_%x%!" 139.
endlocal &set "%~2= %wd% " 140.
goto :eof 141.
142.
:createCell 143.
:: Erstellt den Inhalt der Zellen der Kalendertabelle. 144.
setlocal enabledelayedexpansion 145.
set "cell= " 146.
set /a day=%~1-DoW 147.
if %1 gtr %DoW% ( 148.
if %~1 leq %neededCells% ( 149.
set "sday= %day%" 150.
set "cell= !sday:~-2! " 151.
if %day%==%dd% ( 152.
if %mm%==%cmm% ( 153.
if %yy%==%cyy% ( 154.
set "cell=*!sday:~-2!*" 155.
) 156.
) 157.
) 158.
) 159.
) 160.
endlocal &set "%~2=%cell% 161.
goto :eof 162.
163.
:change 164.
:: Ändert den Monat 165.
setlocal enabledelayedexpansion 166.
set "m=" &set "y=" 167.
for /f "tokens=1,2" %%a in ("%~1 %~2") do (set "m=%%a" &set "y=%%b") 168.
set "nm=!nm_%m%!" 169.
if defined nm ( 170.
set /a mm=nm 171.
) else ( 172.
set /a m=100!m!%%100 2>nul 173.
if !m! gtr 0 (if !m! lss 13 set /a mm=m) 174.
) 175.
if defined y ( 176.
set /a y=y 2>nul 177.
if !y! geq 1900 if !y! leq 2100 set /a yy=y 178.
) 179.
endlocal &set "mm=%mm%" &set "yy=%yy%" 180.
goto :eofGrüße
rubberman
<edit>
@Biber
Danke für die Blumen
Bei der Gelegenheit habe ich die Variablen in Zeile 100 noch gerade gerückt.
</edit>
Biber schreibt am 09.04.2011 um 21:32:03 Uhr
Moin rubberman,
und natürlich auch moin MHI-LCT und moin bastla,
das ist doch wirklich eine sehr nette Fingerübung.
Die werde gern weiterempfehlen.
Weil der Charme deines MacGuwyer-Kalenders ja gar nicht richtig rüberkommt ohne den Output, trage ich den mal nach:
Danke für dieses Beispiel.
Biber
und natürlich auch moin MHI-LCT und moin bastla,
das ist doch wirklich eine sehr nette Fingerübung.
Die werde gern weiterempfehlen.
Weil der Charme deines MacGuwyer-Kalenders ja gar nicht richtig rüberkommt ohne den Output, trage ich den mal nach:
┌──────────────────────────────────┐ │ │ │ November 2066 │ │ │ ├────┬────┬────┬────┬────┬────┬────┤ │ Mo │ Di │ Mi │ Do │ Fr │ Sa │ So │ ├────┼────┼────┼────┼────┼────┼────┤ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ │ 8 │ 9 │ 10 │ 11 │ 12 │ 13 │ 14 │ │ 15 │ 16 │ 17 │ 18 │ 19 │ 20 │ 21 │ │ 22 │ 23 │ 24 │ 25 │ 26 │ 27 │ 28 │ │ 29 │ 30 │ │ │ │ │ │ │ │ │ │ │ │ │ │ └────┴────┴────┴────┴────┴────┴────┘ ─────────────────────────────────────── Springe zu Monat M oder MMMM oder M YYYY oder MMMM YYYY r (Reset), e (Exit) Eingabe: Danke für dieses Beispiel.
Biber
rubberman schreibt am 10.04.2011 um 18:53:15 Uhr
Danke, bastla.
Natürlich ist das nur Spielerei. Andererseits kann man sich einzelne Funktionen des Codes zu Nutze machen um ähnliche Lösungen zu entwickeln. So sollte dies ...
... in etwa das ausgeben, was MHI-LCT und Du mit euren Codes bezweckt.
Schwierig ist bei Batchlösungen immer die unterschiedliche Formatierung des Datums. Ich hab's mal mit dem Lesen der Registry versucht, um das Datum möglichst richtig aufzudröseln.
Die Schaltjahrbehandlung von MHI-LCT scheint mir zudem auch falsch zu sein. Es sind eben nicht alle dur 4 ganzzahlig teilbaren Jahre Schaltjahre, da gab's noch eine Regel, wie volle Jahrhunderte zu behandeln sind
Grüße
rubberman
Natürlich ist das nur Spielerei. Andererseits kann man sich einzelne Funktionen des Codes zu Nutze machen um ähnliche Lösungen zu entwickeln. So sollte dies ...
01.
@echo off &setlocal enabledelayedexpansion 02.
:: Variablen vordefinieren 03.
set /a n=0 04.
for %%a in (Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag) do ( 05.
set "wd_!n!=%%a" 06.
set /a n+=1 07.
) 08.
:: hole Jahr, Monat und Tag des derzeitigen Datums 09.
call :GetDate yy mm dd 10.
:: hole den Wochentag des derzeitigen Datums 11.
call :DayOfWeek %yy% %mm% %dd% 0 DoW 12.
:: Ausgabe 13.
echo Es ist !wd_%DoW%!, der %dd%.%mm%.%yy%. 14.
pause>nul 15.
goto :eof 16.
:: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ End Of Main ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 17.
18.
:GetDate yOut mOut dOut 19.
:: Output: Jahr, Monat und Tag ohne vorangestellte Nullen 20.
setlocal 21.
for /f "tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v iDate') do set "iDate=%%a" 22.
for /f "tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v sDate') do set "sDate=%%a" 23.
for /f "tokens=2" %%i in ("%date%") do set "date=%%i" 24.
for /f "tokens=1-3 delims=%sDate%" %%a in ("%date%") do ( 25.
if %iDate%==0 set /a mm=100%%a%%100,dd=100%%b%%100,yy=10000%%c%%10000 26.
if %iDate%==1 set /a dd=100%%a%%100,mm=100%%b%%100,yy=10000%%c%%10000 27.
if %iDate%==2 set /a yy=10000%%a%%10000,mm=100%%b%%100,dd=100%%c%%100 28.
) 29.
endlocal &set "%~1=%yy%" &set "%~2=%mm%" &set "%~3=%dd%" 30.
goto :eof 31.
32.
:DayOfWeek yyyyIn mmIn ddIn firstDayOfWeekIn numOut 33.
:: für Input: firstDayOfWeekIn ist 0 wenn Montag ... 6 wenn Sonntag 34.
:: Output: 0 (erster Tag der Woche) ... 6 (letzter Tag der Woche) 35.
setlocal 36.
set /a yy=10000%~1%%10000,mm=100%~2%%100,dd=100%~3%%100 37.
if %yy% lss 100 set /a yy+=2000 38.
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,DoW=153*m+2,DoW=DoW/5+dd+y*365+y/4-y/100+y/400-2472630-%~4,DoW%%=7 39.
endlocal &set "%~5=%DoW%" 40.
goto :eofSchwierig ist bei Batchlösungen immer die unterschiedliche Formatierung des Datums. Ich hab's mal mit dem Lesen der Registry versucht, um das Datum möglichst richtig aufzudröseln.
Die Schaltjahrbehandlung von MHI-LCT scheint mir zudem auch falsch zu sein. Es sind eben nicht alle dur 4 ganzzahlig teilbaren Jahre Schaltjahre, da gab's noch eine Regel, wie volle Jahrhunderte zu behandeln sind
Grüße
rubberman
bastla schreibt am 10.04.2011 um 19:01:56 Uhr
Hallo rubberman!
... und obwohl natürlich auch die Überprüfung der restlosen Teilbarkeit durch 100 und dann durch 400 sicher auch für ihn kein Problem wäre, gehe ich stark davon aus, dass sein Batch kein "Jahr 2400-Problem" verursachen wird ...
Grüße
bastla
Die Schaltjahrbehandlung von MHI-LCT scheint mir zudem auch falsch zu sein.
da gab's noch eine Regel, wie volle Jahrhunderte zu behandeln sind
Deshalb hat MHI-LCT ja auch die Einschränkung auf sollte bis ins jahr 2099 passen vorgenommen ...da gab's noch eine Regel, wie volle Jahrhunderte zu behandeln sind
... und obwohl natürlich auch die Überprüfung der restlosen Teilbarkeit durch 100 und dann durch 400 sicher auch für ihn kein Problem wäre, gehe ich stark davon aus, dass sein Batch kein "Jahr 2400-Problem" verursachen wird ...
Grüße
bastla
Biber schreibt am 10.04.2011 um 19:51:55 Uhr
{OT]
Moin bastla, rubberman und alle anderen unbeschwert Spielenden,
Aber die gute Nachricht ist: es wird wahrscheinlich in der Tat kein "Jahr-2400-Problem" geben.
Der gemeinsam von den Mayas, Roland Emmerich und TEPCO entwickelte Kalender endet im Jahr 2012,
Das allerdings ist ein auch der Batchprogrammierung zu berücksichtigendes Schaltjahr.
Grüße und schönen Restsonntag
[/OT]
Moin bastla, rubberman und alle anderen unbeschwert Spielenden,
Zitat von bastla:
... und obwohl natürlich auch die Überprüfung der restlosen Teilbarkeit durch 100 und dann durch 400 sicher auch
für ihn kein Problem wäre, gehe ich stark davon aus, dass sein Batch kein "Jahr 2400-Problem" verursachen wird
...
Oder war es vielleicht die Teilbarkeit durch 100, aber nicht durch 400? *grybel*... und obwohl natürlich auch die Überprüfung der restlosen Teilbarkeit durch 100 und dann durch 400 sicher auch
für ihn kein Problem wäre, gehe ich stark davon aus, dass sein Batch kein "Jahr 2400-Problem" verursachen wird
...
Aber die gute Nachricht ist: es wird wahrscheinlich in der Tat kein "Jahr-2400-Problem" geben.
Der gemeinsam von den Mayas, Roland Emmerich und TEPCO entwickelte Kalender endet im Jahr 2012,
Das allerdings ist ein auch der Batchprogrammierung zu berücksichtigendes Schaltjahr.
Grüße und schönen Restsonntag
[/OT]
MHI-LCT schreibt am 11.04.2011 um 08:53:45 Uhr
Oh, hier ist ja eine ganz schöne Diskussion entbrannt! ;)
Damit habe ich nun nicht gerechnet!
Und ja, mir ist bewusst, dass Vielfache von 100 keine Schaltjahre sind obwohl sie auch durch 4 teilbar sind und Vielfache von 400 wieder doch Schaltjahre darstellen, obwohl sie durch 100 teilbar sind! ;) Das liegt wohl daran, dass die Erde nicht ganz "rund" um die Sonne kreist und nochdazu, nach einer umrundung, unsere Kugel nicht wieder in der "0:00Uhr-Ausgangsposition" angekommen ist, sondern etwa 6Std, nen paar minuten und sekunden daneben. Daher auch das Schaltjahr alle 4 Jahre. (4*6Std = 24Std => 1Tag)
Dazu fällt mir ein, dass ich mal eine Funktion geschrieben hatte, die den Geburtstag von "29.Feb"-Kandidaten auf den entsprechenden Tag umrechnet. Also die Dauer der Erdumrundung um die Sonne als 1Jahr annimmt und so festlegt, wann die Erde wieder an der Stelle steht, als der Mensch geboren wurde und den entsprechenden Tag dazu ermittelt. Ist hin und wieder der 28.02 und manchmal eben der 01.03. Es sei denn es ist ein Schaltjahr.
Wenn ich es noch wieder finde, poste ich es mal.
Gruß, MHI
<edit>
Dazu fällt mir jetzt grade noch ein "Schmarn" ein, den ich mal aus langer Weile programmiert hatte:
http://halfadayinnorway.ha.funpic.de/rot. ...
</edit>
Damit habe ich nun nicht gerechnet!
Und ja, mir ist bewusst, dass Vielfache von 100 keine Schaltjahre sind obwohl sie auch durch 4 teilbar sind und Vielfache von 400 wieder doch Schaltjahre darstellen, obwohl sie durch 100 teilbar sind! ;) Das liegt wohl daran, dass die Erde nicht ganz "rund" um die Sonne kreist und nochdazu, nach einer umrundung, unsere Kugel nicht wieder in der "0:00Uhr-Ausgangsposition" angekommen ist, sondern etwa 6Std, nen paar minuten und sekunden daneben. Daher auch das Schaltjahr alle 4 Jahre. (4*6Std = 24Std => 1Tag)
Dazu fällt mir ein, dass ich mal eine Funktion geschrieben hatte, die den Geburtstag von "29.Feb"-Kandidaten auf den entsprechenden Tag umrechnet. Also die Dauer der Erdumrundung um die Sonne als 1Jahr annimmt und so festlegt, wann die Erde wieder an der Stelle steht, als der Mensch geboren wurde und den entsprechenden Tag dazu ermittelt. Ist hin und wieder der 28.02 und manchmal eben der 01.03. Es sei denn es ist ein Schaltjahr.
Wenn ich es noch wieder finde, poste ich es mal.
Gruß, MHI
<edit>
Dazu fällt mir jetzt grade noch ein "Schmarn" ein, den ich mal aus langer Weile programmiert hatte:
http://halfadayinnorway.ha.funpic.de/rot. ...
</edit>
Skyemugen schreibt am 11.04.2011 um 16:24:31 Uhr
Zitat von MHI-LCT:
<edit>
Dazu fällt mir jetzt grade noch ein "Schmarn" ein, den ich mal aus langer Weile programmiert hatte:
http://halfadayinnorway.ha.funpic.de/rot. ...
</edit>
<edit>
Dazu fällt mir jetzt grade noch ein "Schmarn" ein, den ich mal aus langer Weile programmiert hatte:
http://halfadayinnorway.ha.funpic.de/rot. ...
</edit>
Aloha, [OT]
was ist denn eine Ainimation? Du musst da echt mal Langeweile gehabt haben *g*
greetz André













