| |
|
|
Langer | ¡Hola zusammen,
Yo búsqueda una Weg de el Summe el Tage zwischen zwei Datumswerten el Wochenenden fuera a rechnen. z.B. Urlaubsberechnung de Dienstag el 4.4.2017 a Dienstag el 11.4.2017 son incl. 4. y 11. 8 Tage. Urlaubstage aber sólo 6 como el Wochenende eh frei es. Irgendwie voluntad lo No gelinge esta una passende Formel a erdenken. Sombrero alguien ya una vez así una Berechnung angestellt?
Dirk |
|
|
| |
|
|
|
p.specht
| Gültigkeitszeitraum Gregorianischer Kalender? Oder genügt unser Jahrhundert? Welche XProfan-Versión (de X2 hay komfortable Características a Wochentagsberechnung + el Hilfsfunktion dow() Day of Week)
Für ältere Profanversionen como 11.2a wäre el nachstehende Proc tal vez bastante brauchbar. Gruss
Título de la ventana "Direkte Wochentagsermittlung de Datum"
' Versión 1.02_beta, sin jede Gewähr oder Garantie
declarar como$,dy%,mnth%,fyear%,syear%,kal$,i%,j%,h%,greg%
Ventana 424,300
otra vez:
cls rgb(0,100,255)
imprimir
imprimir " Algorithmus " + chr$(34) + "Zeller´s Kongruenz" + chr$(34) + " "
imprimir " Quelle: Pfarrer Dr.math. Christian Zeller A.D.1882 "
imprimir
imprimir " Datum [dd.mm.yyyy] = ";
locate 5,24 : input como$
caso como$="" : end
dy%=val(left$(como$,2))
mnth%=val(mid$(como$,4,2))
fyear%=val(mid$(como$,7,4))
syear%=val(mid$(como$,9,2))
imprimir
imprimir
if fyear% > 1582 : greg%=1
elseif fyear% < 1582 : greg%=0
elseif fyear% = 1582
if mnth%>10 : greg%=1
elseif mnth%<10 : greg%=0
elseif mnth%=10
if dy%>=15 : greg%=1
elseif dy%<=4 : greg%=0
más
greg%=-1
endif
endif
endif
kal$=" Julianischer Kalender 45vChr-4.10.1582 "
caso greg%=1 : kal$=" Gregorianischer Kalender "
caso greg%=-1: kal$=" KEIN KALENDER ZUFREFFEND! "
Imprimir kal$
Imprimir " Der " + str$(dy%)+"."+str$(mnth%)+"."+str$(fyear%)+" fällt en una ";
if mnth%<3
mnth%=mnth%+12
fyear% = fyear%-1
syear% = syear%-1
endif
h%=-1
if 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
más
h%=99
endif
if h%=0 : imprimir "Samstag";
elseif h%=1 : imprimir "Sonntag";
elseif h%=2 : imprimir "Montag";
elseif h%=3 : imprimir "Dienstag";
elseif h%=4 : imprimir "Mittwoch";
elseif h%=5 : imprimir "Donnerstag";
elseif h%=6 : imprimir "Freitag";
elseif h%=99: imprimir " "
imprimir " no existierenden Zeitraum (wegen "
imprimir " grego. Kalenderreform ausgelassen)";
más : imprimir " fehlerhaften Eingabewert";
endif
imprimir ". "
WaitInput
Goto "nochmal"
Im Principio es nämlich ohnehin Einzeltagsbetrachtung angesagt, wegen el unregelmäßigen Feiertage, el auch todavía bundesländerweise verschieden es. Empfehlenswert: "Kastner: Terminplanung con Basic en Commodore" (aniquarisch tal vez?) |
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 04.04.2017 ▲ |
|
|
|
|
Langer | ¡Hola p.specht, danke para deinen Post. Das war todavía no el Yo eigentlich meinte.
Mir es inzwischen el passende Concepto gekommen.
Declarar hWin1&, hButton1&, Ende&, hDate1&, hWin2&, hButton2&, hDate2&, Date&, Tage%, A&, b%
hWin1& = @Crear("Dialog", %hWnd, "1. Urlaubstag", 100, 100, 200, 200)
hDate1& = @Crear("DateEdit", hWin1&, "", 10, 50, 100, 24)
hWin2& = @Crear("Dialog", %hWnd, "letzter Urlaubstag", 350, 100, 200, 200)
hButton2& = @Crear("Button", hWin2&, "Ende", 10, 90, 180, 24)
hDate2& = @Crear("DateEdit", hWin2&, "", 10, 50, 100, 24)
Claro Ende&
Sinestar encargado Ende&
WaitInput
If @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 Tiempo1$=@GetText $(hDate1&)
Var Tiempo2$=@GetText $(hDate2&)
Var d! = dt("SetDate",@GetText $(hDate1&))
Var wtag& = dt("getDoW",d!)
Declarar wochentag$
Case wtag& = 1 : wochentag$ = "Montag"
Case wtag& = 2 : wochentag$ = "Dienstag"
Case wtag& = 3 : wochentag$ = "Mittwoch"
Case wtag& = 4 : wochentag$ = "Donnerstag"
Case wtag& = 5 : wochentag$ = "Freitag"
Case wtag& = 6 : wochentag$ = "Samstag"
Case wtag& = 7 : wochentag$ = "Sonntag"
b% = DaysBetween(Tiempo1$, Tiempo2$)
Tage% = b% + wtag&
Case Tage% < 7 : A& = 0
Case Tage% > 7 : A& = 2
Case Tage% > 14 : A& = 4
Case Tage% > 21 : A& = 6
Case Tage% > 28 : A& = 8
Date& = (DaysBetween(Tiempo1$, Tiempo2$) + 1) - A&
imprimir Tiempo1$
imprimir Tiempo2$
imprimir
imprimir DaysBetween(Tiempo1$, Tiempo2$) + 1;" Tag(e)"
imprimir
imprimir "der erste Tag es una " + wochentag$
imprimir
imprimir "das entspricht ";Date&;"Tagen Urlaub"
A& = 0
waitInput
fehlt ahora todavía el Feiertagsüberprüfung, aber como tener Yo auch ya una Concepto. ¿Es aber sólo 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 | Puedo lo sólo dir sagen cómo lo por Excel hacer kann.... [...]
Und para Daten benutze Yo el MWDATE.DLL |
|
|
| |
|
|