| |
|
|
Langer | allô zusammen,
je cherche pour einem Weg aus qui somme qui Tage entre deux Datumswerten qui Wochenenden raus trop le calcul. z.B. Urlaubsberechnung de mardi den 4.4.2017 jusqu'à mardi den 11.4.2017 sommes incl. 4. et 11. 8 Tage. Urlaubstage mais seulement 6 là cela Wochenende eh libre ist. Irgendwie veux es Je ne gelinge hierfür une passende Formel trop erdenken. Hat quelqu'un déjà einmal so une Berechnung angestellt?
Dirk |
|
|
| |
|
|
|
p.specht
| Gültigkeitszeitraum Gregorianischer le calendrier? ou bien suffisant unser siècle? quelle XProfan-Version (ab X2 gibt es komfortable Funktionen zur Wochentagsberechnung + qui Hilfsfunktion dow() Day of Semaine)
Pour ältere Profanversionen comment 11.2a wäre cela nachstehende Proc peut-être entier brauchbar. Gruss
Titre de la fenêtre "Direkte Wochentagsermittlung aus Datum"
' Version 1.02_beta, sans chacun Gewähr ou bien garantie
declare là$,dy%,mnth%,fyear%,syear%,kal$,i%,j%,h%,greg%
Fenêtre 424,300
nochmal:
cls rgb(0,100,255)
imprimer
imprimer " Algorithmus " + chr$(34) + "Zeller´s Kongruenz" + chr$(34) + " "
imprimer " source: curé Dr.math. Christian Zeller A.D.1882 "
imprimer
imprimer " date [dd.mm.yyyy] = ";
locate 5,24 : input là$
cas là$=» : end
dy%=val(left$(là$,2))
mnth%=val(mid$(là$,4,2))
fyear%=val(mid$(là$,7,4))
syear%=val(mid$(là$,9,2))
imprimer
imprimer
si fyear% > 1582 : greg%=1
elseif fyear% < 1582 : greg%=0
elseif fyear% = 1582
si mnth%>10 : greg%=1
elseif mnth%<10 : greg%=0
elseif mnth%=10
si dy%>=15 : greg%=1
elseif dy%<=4 : greg%=0
d'autre
greg%=-1
endif
endif
endif
kal$=" Julianischer le calendrier 45vChr-4.10.1582 "
cas greg%=1 : kal$=" Gregorianischer le calendrier "
cas greg%=-1: kal$=" KEIN KALENDER ZUFREFFEND! "
Imprimer kal$
Imprimer " qui " + str$(dy%)+"."+str$(mnth%)+"."+str$(fyear%)+" fällt sur une ";
si mnth%<3
mnth%=mnth%+12
fyear% = fyear%-1
syear% = syear%-1
endif
h%=-1
si greg%=1
h%=(dy%+int((mnth%+1)*26/10)+syear%+int(syear%/4)+int( int(fyear%/100) /4) + 5*int(fyear%/100) ) mod 7
elseif greg%=0
h%=(dy%+int((mnth%+1)*26/10)+syear%+int(syear%/4)+ 5 + 6* int(fyear%/100) ) mod 7
d'autre
h%=99
endif
si h%=0 : imprimer "Samstag";
elseif h%=1 : imprimer "Sonntag";
elseif h%=2 : imprimer "Montag";
elseif h%=3 : imprimer "Dienstag";
elseif h%=4 : imprimer "Mittwoch";
elseif h%=5 : imprimer "Donnerstag";
elseif h%=6 : imprimer "Freitag";
elseif h%=99: imprimer " "
imprimer " pas existierenden la période (à cause de "
imprimer " grego. Kalenderreform ausgelassen)";
d'autre : imprimer " fehlerhaften Eingabewert";
endif
imprimer ". "
WaitInput
Goto "nochmal"
Im Prinzip ist nämlich de toute façon Einzeltagsbetrachtung annoncé, à cause de qui unregelmäßigen Feiertage, qui aussi encore bundesländerweise verschieden ist. Empfehlenswert: "Kastner: Terminplanung avec Basic sur Commodore" (aniquarisch peut-être?) |
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 04.04.2017 ▲ |
|
|
|
|
Langer | allô p.specht, merci pour deinen poste. cela était encore pas cela quoi je eigentlich meinte.
Mir ist inzwischen qui passende concept gekommen.
Déclarer hWin1&, hButton1&, Ende&, hDate1&, hWin2&, hButton2&, hDate2&, Date&, Tage%, A&, b%
hWin1& = @Créer("Dialog", %hWnd, "1. Urlaubstag", 100, 100, 200, 200)
hDate1& = @Créer("DateEdit", hWin1&, », 10, 50, 100, 24)
hWin2& = @Créer("Dialog", %hWnd, "letzter Urlaubstag", 350, 100, 200, 200)
hButton2& = @Créer("Button", hWin2&, "Ende", 10, 90, 180, 24)
hDate2& = @Créer("DateEdit", hWin2&, », 10, 50, 100, 24)
Claire Ende&
WhileNot Ende&
WaitInput
Si @GetFocus(hButton2&)
Ende& = 1
EndIf
Endwhile
Def @Date(1) dt("setDate",val(substr$(substr$(@$(1),1," "),-1,".")), val(substr$(substr$(@$(1),1," "),2,".")), val(substr$(substr$(@$(1),1," "),1,".")))
Def @DateDiff(2) dt("DateTimeStr", "dd.mm.yyyy", Date(@$(1))-Date(@$(2)))
Def @DaysBetween(2) val(abs(30-val(substr$(substr$(DateDiff(@$(1),@$(2)),1,"|"),1,"."))))
Var Zeit1$=@GetText $(hDate1&)
Var Zeit2$=@GetText $(hDate2&)
Var d! = dt("SetDate",@GetText $(hDate1&))
Var wtag& = dt("getDoW",d!)
Déclarer wochentag$
Cas wtag& = 1 : wochentag$ = "Montag"
Cas wtag& = 2 : wochentag$ = "Dienstag"
Cas wtag& = 3 : wochentag$ = "Mittwoch"
Cas wtag& = 4 : wochentag$ = "Donnerstag"
Cas wtag& = 5 : wochentag$ = "Freitag"
Cas wtag& = 6 : wochentag$ = "Samstag"
Cas wtag& = 7 : wochentag$ = "Sonntag"
b% = DaysBetween(Zeit1$, Zeit2$)
Tage% = b% + wtag&
Cas Tage% < 7 : A& = 0
Cas Tage% > 7 : A& = 2
Cas Tage% > 14 : A& = 4
Cas Tage% > 21 : A& = 6
Cas Tage% > 28 : A& = 8
Date& = (DaysBetween(Zeit1$, Zeit2$) + 1) - A&
imprimer Zeit1$
imprimer Zeit2$
imprimer
imprimer DaysBetween(Zeit1$, Zeit2$) + 1;" journée(e)"
imprimer
imprimer "der erste journée est un " + wochentag$
imprimer
imprimer "das entspricht ";Date&;"Tagen Urlaub"
A& = 0
waitInput
fehlt maintenant encore qui Feiertagsüberprüfung, mais là hab je aussi déjà une concept. Doit je mais seulement testen. |
|
|
| |
|
|
|
p.specht
| |
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 04.04.2017 ▲ |
|
|
|
|
ByteAttack | je peux es seulement dir dire comment on es par Excel faire peux.... [...]
et pour données benutze je qui MWDATE.DLL |
|
|
| |
|
|