Español
Fuente/ Codesnippets

Datum Letzter Monat Php Wochentag

 
Manchmal benötigt al Datum des letzten Wochentages uno Monats
abzüglich Wochenende y yo glaube como una "coole" Solución a haben:
KompilierenMarcaSeparación
//PHP:
;echo date_lwdom(time())

;function date_lwdom($time){//last working day of month

    ;$a=explode(".",date_ldom($time,"N.j"))
    ;return ($a[0]>5?$a[1]-$a[0]+5:$a[1])

;}

;function date_ldom($time,$format="j") {//last day of month

    ;return date($format,strtotime("-1 second",strtotime("+1 month",strtotime(date("m",$time)."/01/".date("Y",$time)."00:00:00"))))

;}


Dies es unbeachtet el Feiertage quasi el letzte Arbeitstag uno Monats si
al darauf folgende Wochenende no "arbeiten" muss.

Vlt. ha dafür auch alguien una xprofansche Solución.
 
25.05.2012  
 




Thomas
Freier
Kurz zusammen kopiert de el XProfan 10ner Tiempo. Benötigte el 3.Werktag después de Dateierstellung. Ob lo una elegantere Berechnung el beweglichen Feiertage son???
KompilierenMarcaSeparación
Def IsLeapYear(1) If( %(1) MOD 4 = 0 ,  %(1) MOD 100 <> 0, %(1) MOD 400 = 0 & 1 | 0 )
cls
Usefont "MS Sans Serif",10,0,0,0,0
SetDialogFont 1
DrawText 10,60,"allg. Feiertage"
var FeiertageLV%=CreateListBox(%hwnd,1,10,90,150,200)
var Datum$="02.02.2012"
FEIERTAGE Datum$
WERKTAG Datum$
waitinput
end

Proc WERKTAG

    Parameters _Datum$
    Declare _t%, _m%, _j%, _wtk%, _wtc%
    _m%=val(substr$(_Datum$,2,"."))
    _j%=val(substr$(_Datum$,3,"."))
    case InStr(substr$(_Datum$,2,"."),"01030507081012") : _t%=31
    case InStr(substr$(_Datum$,2,"."),"0406091011") : _t%=30
    case substr$(_Datum$,2,".") = "02" : _t%=28 + IsLeapYear(val(substr$(_Datum$,3,".")))' Schaltjahr?
    ' 0= Sonntag

    Whileloop 7

        _wtk% = int(0.6+1/_m%)
        _wtc%=int(13*(_m%+12*_wtk%+1)/5)+int(5*(_j%-_wtk%)/4)-int((_j%-_wtk%)/100)+int((_j%-_wtk%)/400)-(7*int((int(13*(_m%+12*_wtk%+1)/5)+int(5*(_j%-_wtk%)/4)-int((_j%-_wtk%)/100)+int((_j%-_wtk%)/400)+_t%-1)/7))+_t%-1

        If (_wtc% <> 0) AND  (_wtc% < 6)

            ' Feiertag?

            If @SelectString(FeiertageLV%,-1,str$(_j%)+"."+Format$("00",_m%)+"."+Format$("00",_t%))=-1

                print "letzer Werktag im " + substr$(_Datum$,2,".")+". Monat des Jahres "+substr$(_Datum$,3,".") + \
                " ist der: " + @Format$("00",_t%)
                BREAK

            EndIf

        EndIf

        dec _t%

    EndWhile

EndProc

Proc FEIERTAGE

    Parameters _Datum$
    var _j%=val(substr$(_Datum$,3,"."))
    AddString(FeiertageLV%,str$(_j%)+".01.01")
    AddString(FeiertageLV%,str$(_j%)+".05.01")
    AddString(FeiertageLV%,str$(_j%)+".10.03")
    Declare osterzahl%
    ' Berechnet den Ostersonntag
    Declare a%,b%,c%,d%,e%,f%,g%,h%,h1%,h2%,i%
    Declare k%,l%,L1%,L2%,m%,m1%,m2%,n%,n1%,n2%,p%
    Declare kartag%,karmonat%,ostermontag%,ostermonat%
    a%=_j% Mod 19
    b%=_j%/100
    c%=_j% Mod 100
    d%=b%/4
    e%=b% Mod 4
    f%=(b%+8)/25
    g%= b% + f%
    Inc g%
    g%=g%/3
    h1%=19*a%
    h2%=b%-d%
    dec h2%,g%
    inc h2%,15
    h%=h1%+h2%
    h%=h% Mod 30
    i%=c%/4
    k%=c% Mod 4
    L1%=2*e%
    inc L1%,32
    L2%=2*i%
    inc L1%,L2%
    L2%=h%+k%
    l%=L1%-L2%
    l%=l% Mod 7
    m1%=11 * h%
    m2%=22+l%
    m%=a%+m1%
    inc m%,m2%
    m%=m%/451
    n1%=7*m%
    n%=h%+l%
    dec n%,n1%
    n2%=n%+114
    n%=n2%/31' n% ist der Monat des Osterdatums
    p%=n2% Mod 31
    Inc p%' p% ist der Tag des Osterdatums
    '   Karfreitag
    kartag%=p%-2
    karmonat%=n%

    If p%=1

        kartag%=30
        karmonat%=3

    ElseIf p%=2

        kartag%=31
        karmonat%=3

    EndIf

    AddString(FeiertageLV%,str$(_j%)+"."+Format$("00",karmonat%)+"."+Format$("00",kartag%))
    '   Ostersonntag"
    AddString(FeiertageLV%,str$(_j%)+"."+Format$("00",n%)+"."+Format$("00",p%))
    '   Ostermontag ***

    If p%=31

        ostermontag%=1
        ostermonat%=4

    Else

        ostermontag%=p%+1
        ostermonat%=n%

    EndIf

    AddString(FeiertageLV%,str$(_j%)+"."+Format$("00",ostermonat%)+"."+Format$("00",ostermontag%))
    ' Berechnung osterabhängiger Feiertage
    osterzahl%=59+p%
    Case n%=4: osterzahl%=osterzahl%+31
    Declare hi%,himon%,pfi%,pfimonat%,pfimo%,frolei%,fromon%,muta%
    ' Himmelfahrt
    hi%=osterzahl%+39

    If hi%>151

        himon%=6
        hi%=hi%-151

    Else

        himon%=5
        hi%=hi%-120

    EndIf

    AddString(FeiertageLV%,str$(_j%)+"."+Format$("00",himon%)+"."+Format$("00",hi%))
    '   Pfingsten
    pfi%=osterzahl%+49

    If pfi%>151

        pfimonat%=6
        pfi%=pfi%-151

    Else

        pfimonat%=5
        pfi%=pfi%-120

    EndIf

    AddString(FeiertageLV%,str$(_j%)+"."+Format$("00",pfimonat%)+"."+Format$("00",pfi%))
    '   Pfingstmontag ***

    If pfi%>31

        pfimo%=1
        pfimonat%=6

    Else

        pfimo%=pfi%+1

    EndIf

    AddString(FeiertageLV%,str$(_j%)+"."+Format$("00",pfimonat%)+"."+Format$("00",pfimo%))
    AddString(FeiertageLV%,str$(_j%)+".12.25")
    AddString(FeiertageLV%,str$(_j%)+".12.26")
    ' wenn Heiligabend nicht als Werktag angesehen wird, als Feiertag eintragen
    '   AddString(FeiertageLV%,str$(_ja%)+".12.24")
    ' wenn Silvester nicht als Werktag angesehen wird, a
ertag eintragen ' AddStrings(FeiertageLV%,str$(_j%)+".12.31") ENDPROC
 
Gruß Thomas
Windows XP SP2, XProfan X2
26.05.2012  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

12.698 Views

Untitledvor 0 min.
Peter Max Müller15.01.2024
ecki10.02.2023
p.specht21.11.2021
R.Schneider20.11.2021
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

iF (1x)
Thomas Freier (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie