Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wochen eines Monats (deren Start- und Endtag) ermitteln (https://www.delphipraxis.net/133305-wochen-eines-monats-deren-start-und-endtag-ermitteln.html)

hoika 29. Apr 2009 13:34


Wochen eines Monats (deren Start- und Endtag) ermitteln
 
Hallo #,

ich fummel mir hier gerade einen ab.

geg: ein Monat (Startdatum, Enddatum: TDateTime
ges. Anzahl der Wochen des Monats mit Angabe
Start/Ende der jeweiligen Woche

Also bei März 2009 wäre das dann:
1.3-1.3.
2.3-8.3.

usw.


Irgendwie stehe ich voll auf dem Schlauch.

Das kann doch nicht so schwer sein ;(


Heiko

mkinzler 29. Apr 2009 13:35

Re: Anzahl der Wochen eines Monats ermitteln
 
Die Unit DateUtils kennst du aber schon, oder? :zwinker:

hoika 29. Apr 2009 13:47

Re: Anzahl der Wochen eines Monats ermitteln
 
Hallo,

jaaaa, und welche Methode draus ?

Dass ich DayOfWeek verwenden muss is schon klar,
irgendwie bekomme ich das aber nicht hin.

GetWeeksOnMonth? ;)

Aktueller Ansatz:
- alle Sonntage bestimmen
- per Schleife den Montag der Sonntage bzw. ersten Tag des Monats
(bei der ersten Woche)
- ist letzter Tag des Monats kein Sonntag,
auch von dieser Woche den Montag bestimmen

Ich wollte das eigentlich per Schleife machen,
das hakt aber gerade bei mir (interessant ist der März mit dem 1.3, gleich als Sonntag)

Ich werde mal dunit anwerfen.
Der Code ist mir nicht geheuer ;)


Heiko <- hat heute seinen schwachen Tag (einmal im Jahr darf er)

SirThornberry 29. Apr 2009 13:52

Re: Anzahl der Wochen eines Monats ermitteln
 
Wenn Start und Anfang immer im gleichen Monat sind ist es doch das einfachste: (Ende - Start) / 7
Damit hast du die Anzahl der Wochen (eine Woche hat schließlich immer 7 Tage). Oder zählen bei dir nur Wochen von einem bestimmten Wochentag bis zu einem bestimmten Wochentag? Dann müsstest du definieren ob du es wie in Europa üblich machen willst (Montag bis Sonntag) oder ob bei dir der Wochenstart, wie in manchen Ländern üblich, auf einem anderen Wochentag liegt.

Hansa 29. Apr 2009 13:59

Re: Anzahl der Wochen eines Monats ermitteln
 
Zitat:

Zitat von SirThornberry
...ob du es wie in Europa üblich machen willst (Montag bis Sonntag)...

Im christlichen Abendland beginnt die Woche überall Sonntags. Also : Kirchgang am Sonntag ist wohl wieder fällig. :mrgreen: Sogar Delphi hält sich daran. Sonntag = 1. Siehe DayOfWeek F1

hoika 29. Apr 2009 13:59

Re: Anzahl der Wochen eines Monats ermitteln
 
Hallo,

es geht um die unterschiedlichen Wochen eines Monats und zwar die Anzahl, aber viel wichtiger Start- und Enddatum.
Und wir reden nur von Germany ;) also Mo-So

Also vom 1. bis zum Sonntag der 1. Woche des Monats
dann wieder der Montag bis So der nächsten Woche usw.

Bei der letzten Woche geht es nur bis zum 30./31.

Noch einmal, ich brauche Start- und Endetag der Wochen.

Also bei März 2009 wäre das dann:
1.3-1.3.
2.3-8.3.
9.3.-15.3
..
30.3.-31.3.


Ich probier mal meine Schleife aus.


Hintergrund ist eine Wochengleitzeit-Regelung, die ich gerade erweitere.


Heiko

Hansa 29. Apr 2009 14:05

Re: Anzahl der Wochen eines Monats ermitteln
 
Zitat:

Zitat von hoika
Also bei März 2009 wäre das dann:
1.3-1.3.
2.3-8.3.
9.3.-15.3

1.3. war Sonntag. DayOfWeek liefert dafür also 1. Montag wäre das +1 also 2. Der nächste Montag wäre 2+7 also der 9. usw. :P

hoika 29. Apr 2009 14:10

Re: Anzahl der Wochen eines Monats ermitteln
 
Hallo,

beim 1.3. will ich aber 1.3.-1.3. haben
ja, und der 30.3. ist auch ein Montag + 7 = 37 ? ;)

Ich habe es jetzt so gelöst wie ich es gesagt habe.

Alle Sonntage oder letzter Tag des Monats suchen und den passenden Montag
bzw. des 1. Tag des Monats.

Mal sehen, was dunit zu den code sagt ...


Heiko

Sharky 29. Apr 2009 14:11

Re: Anzahl der Wochen eines Monats ermitteln
 
Zitat:

Zitat von Hansa
.... Im christlichen Abendland beginnt die Woche überall Sonntags. Also : Kirchgang am Sonntag ist wohl wieder fällig. :mrgreen: Sogar Delphi hält sich daran. Sonntag = 1. Siehe DayOfWeek F1

Das war einmal. Heute wird in gesamt Europa ISO 8601 umgesetzt und dort endet die Woche mit dem Sonntag (ergo fängt sie mit dem Montag an) ;-)

Hansa 29. Apr 2009 14:15

Re: Anzahl der Wochen eines Monats ermitteln
 
Dann eben selber F1 drücken. 8)

Zitat:

Zitat von F1
DayOfWeek gibt den Wochentag des angegebenen Datums als Integer zwischen 1 und 7 zurück. Hierbei gilt der Sonntag als erster Tag der Woche und der Samstag als der siebte Tag.


hoika 29. Apr 2009 14:17

Re: Anzahl der Wochen eines Monats ermitteln
 
Hallo,

also bei mir ergibt DayOfWeek aber DoW_Su ...


PS:
const
DoW_Su = 1; ;)


Heiko

himitsu 29. Apr 2009 14:22

Re: Anzahl der Wochen eines Monats ermitteln
 
Du schaust mit DayOfWeek nach welcher Tag auf den 1. fällt
dann kannst du ausrechnen wie lange die erste Woche noch geht.
nun läßt sich ausrechnen wann der 1. Wochenbeginn innerhalb dieses Monat wäre.
DayOfMonth gibt's doch auch nocht? ... also bis wann geht der Monat > DatumDesMonatsendes

und nun
1{für die 1. Teilwoche} + Aufrunden((DatumDesMonatsendes - DatumDesWochenbeginns + 1 {=Resttage}) / 7) = WochenInDiesemMonat

Medium 29. Apr 2009 14:23

Re: Anzahl der Wochen eines Monats ermitteln
 
Zitat:

Zitat von Hansa
Dann eben selber F1 drücken. 8)

Soso, Delphi gibt also nun schon vor welchen Tag Europa als Wochenbeginn zu erachten hat. :stupid:

hoika 29. Apr 2009 14:27

Re: Anzahl der Wochen eines Monats ermitteln
 
Hallo

#himitsu:
Ich brauche vor allem Starttag und Endtag der einzelnen Wochen.

#Edit1: so, mal den Titel geändert.

DUnit wird jetzt gefüttert, dann schau mer mal.

#Edit2: klappppppppt !!!


Heiko

DevilsCamp 30. Apr 2009 11:56

Re: Anzahl der Wochen eines Monats ermitteln
 
Zitat:

Zitat von Hansa
Dann eben selber F1 drücken. 8)

Zitat:

Zitat von F1
DayOfWeek gibt den Wochentag des angegebenen Datums als Integer zwischen 1 und 7 zurück. Hierbei gilt der Sonntag als erster Tag der Woche und der Samstag als der siebte Tag.


Es gibt
Delphi-Quellcode:
DayOfWeek // Unit Sysutils
und
Delphi-Quellcode:
DayOfTheWeek // Unit DateUtils
Ersteres gibt wirklich den Sonntag als letzten Tag der Woche an. Letzteres aber Montag (weil nach ISO 8601). Um wirklich sicher zu gehen, welcher Wochentag nun der erste der Woche ist (aus Sicht des Anwenders) würde ich allerdings auf API-Funktionen zugreifen (von denen es sicher welche bzgl. Datum/Uhrzeit gibt).

hoika 30. Apr 2009 12:24

Re: Wochen eines Monats (deren Start- und Endtag) ermitteln
 
Hallo,

nein, dazu brauche ich kein API-Funktion.
Wie weiter oben geschrieben geht es hier um
Wochengleitzeit bei einer Monatsabrechnung.

Egal, wann der Monat anfängt, die Woche beginnt am 1.

Schönes Bsp. ist der März 2009.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz