Discussion:
Nr der Woche eines Monats ermitteln
(zu alt für eine Antwort)
klaus schnabel-koeplin
2004-09-28 23:33:08 UTC
Permalink
hallo,

unter : vfp 6.0

gibt es eine funktion oder funktions-kombination

die mir anzeigt in welcher woche des monats
( 1. oder 2. oder 3. oder 4. oder letzte woche des monats )
ein bestimmter tag liegt ?
z.b. der 17.08.2004

danke für eure hilfe.

klaus schnabel-koeplin
k.s-***@gmx.de
Holger Vorberg
2004-09-29 08:00:11 UTC
Permalink
Hi,

ne fertige Funktion gibt es nicht.

Ich würde es so lösen:

function WeekOfMonth( tdDatum )
local lnDay
lnDay = day(m.tdDatum)
do case
case m.lnDay <= 7
return 1
case m.lnDay <= 14
return 2
case m.lnDay <= 21
return 3
case m.lnDay <= 28
return 4
otherwise
return 5
endcase
endfunc
--
Tschüß,

Holger Vorberg
MS Visual FoxPro MVP
dFPUG Regionalleiter Bielefeld
Hans-Peter Grözinger
2004-09-29 09:01:53 UTC
Permalink
Hallo Holger !

Bedenke, nicht jeder Monat beginnt mit einem Montag. :-)
Post by Holger Vorberg
function WeekOfMonth( tdDatum )
local lnDay
lnDay = day(m.tdDatum)
deshalb hinzu:
*-- Erster Tag im Monat
ldDate = (m.tdDatum) - lnDay + 1
*-- Wochentag
lnDOW = DOW(ldDate,2)
*-- Korrektur, wenn Montag nicht erster des Monats
lnDay = lnDay + lnDOW - 1
Post by Holger Vorberg
do case
case m.lnDay <= 7
return 1
case m.lnDay <= 14
return 2
case m.lnDay <= 21
return 3
case m.lnDay <= 28
return 4
otherwise
return 5
endcase
endfunc
--
Hans-Peter Grözinger
TOFU ist gedankenlose Resourcenverschwendung. Siehe http://got.to/quote
http://support.microsoft.com/default.aspx?scid=fh;DE;NGNetikette
Holger Vorberg
2004-09-29 09:11:21 UTC
Permalink
Hi,
Post by Hans-Peter Grözinger
Bedenke, nicht jeder Monat beginnt mit einem Montag. :-)
das habe ich mit Absicht nicht bedacht.

Es wurde ja nicht erwähnt, wie genau die "Woche" definiert ist.
Wenn die ersten sieben Tage des Monats == die erste Woche des Monats sind,
dann stimmt meine Rechnung ja.
Wenn die Wochen deckungsgleich mit den Kalenderwochen sein müssen, dann muss
die Berechnung in der Tat genauer sein.
--
Tschüß,

Holger Vorberg
MS Visual FoxPro MVP
dFPUG Regionalleiter Bielefeld
Hans-Peter Grözinger
2004-09-29 09:41:10 UTC
Permalink
Hallo Holger !
Post by Holger Vorberg
Post by Hans-Peter Grözinger
Bedenke, nicht jeder Monat beginnt mit einem Montag. :-)
das habe ich mit Absicht nicht bedacht.
Wenn die Wochen deckungsgleich mit den Kalenderwochen sein müssen,
dann muss die Berechnung in der Tat genauer sein.
Genau, davon ging ich anhand der Fragestellung aus:

Für Puristen als Einzeiler:

FUNCTION WeekOfMonth( tdDatum )
*******************************
*-- Woche bestimmen
RETURN( CEILING( ( DAY( tdDatum ) + DOW( ( tdDatum ) - DAY( tdDatum ) + 1, 2 ) - 1 ) / 7 ) )
ENDFUNC
--
Hans-Peter Grözinger
TOFU ist gedankenlose Resourcenverschwendung. Siehe http://got.to/quote
http://support.microsoft.com/default.aspx?scid=fh;DE;NGNetikette
klaus schnabel-koeplin
2004-09-29 13:25:10 UTC
Permalink
danke für die anregungen + vorschläge
werde sie ausprobieren und dann einsetzen

ksk
Post by Hans-Peter Grözinger
Hallo Holger !
Post by Holger Vorberg
Post by Hans-Peter Grözinger
Bedenke, nicht jeder Monat beginnt mit einem Montag. :-)
das habe ich mit Absicht nicht bedacht.
Wenn die Wochen deckungsgleich mit den Kalenderwochen sein müssen,
dann muss die Berechnung in der Tat genauer sein.
FUNCTION WeekOfMonth( tdDatum )
*******************************
*-- Woche bestimmen
RETURN( CEILING( ( DAY( tdDatum ) + DOW( ( tdDatum ) - DAY( tdDatum ) +
1, 2 ) - 1 ) / 7 ) )
ENDFUNC
--
Hans-Peter Grözinger
TOFU ist gedankenlose Resourcenverschwendung. Siehe http://got.to/quote
http://support.microsoft.com/default.aspx?scid=fh;DE;NGNetikette
Koen Piller
2004-09-29 23:03:48 UTC
Permalink
MOD(MONTH({^2004/01/05}),WEEK({^2004/01/05})) gibt WochenNr. vom 5.Jan.2004

Achtung, so Einfach geht es, aber es wird gearbeitet mit den
"Wochenanfangstag" wie in Windows eingestellt. Also bei uns in Europa
Montag. Soll dass geändert werden nach Sonntag in Anfangstag, bzw. möchte
man sicher sein dass Benützer nur mit Montag=1.Tag der Woche rechnen dann
soll die Funktion angepasst werden.

Mit Gruss aus Holland,

Koen
Post by klaus schnabel-koeplin
danke für die anregungen + vorschläge
werde sie ausprobieren und dann einsetzen
ksk
Post by Hans-Peter Grözinger
Hallo Holger !
Post by Holger Vorberg
Post by Hans-Peter Grözinger
Bedenke, nicht jeder Monat beginnt mit einem Montag. :-)
das habe ich mit Absicht nicht bedacht.
Wenn die Wochen deckungsgleich mit den Kalenderwochen sein müssen,
dann muss die Berechnung in der Tat genauer sein.
FUNCTION WeekOfMonth( tdDatum )
*******************************
*-- Woche bestimmen
RETURN( CEILING( ( DAY( tdDatum ) + DOW( ( tdDatum ) - DAY( tdDatum ) +
1, 2 ) - 1 ) / 7 ) )
ENDFUNC
--
Hans-Peter Grözinger
TOFU ist gedankenlose Resourcenverschwendung. Siehe http://got.to/quote
http://support.microsoft.com/default.aspx?scid=fh;DE;NGNetikette
Anders Altberg
2004-09-29 19:21:45 UTC
Permalink
Der ISO-norm für wochennummers definiert woche 1 des jahrs als die erste
woche mit vier tagen in dem jahr. Wird mit WEEK(datum,2,2) ermittelt.
Was ist fër dich die erste woche eines monats?
-Anders
Post by klaus schnabel-koeplin
hallo,
unter : vfp 6.0
gibt es eine funktion oder funktions-kombination
die mir anzeigt in welcher woche des monats
( 1. oder 2. oder 3. oder 4. oder letzte woche des monats )
ein bestimmter tag liegt ?
z.b. der 17.08.2004
danke für eure hilfe.
klaus schnabel-koeplin
Loading...