Zum Inhalt springen

Anzahl betroffener Wochen von Verkaufsaktionen berechnen


DerKleineEisbaer

Empfohlene Beiträge

Hallo Zusammen,

folgende Aufgabe stellt sich mir:

Es soll in einer Schnittstelle, welche u.a.52 Wochenfelder beinhaltet, für jede Woche, die von einer Verkaufsaktion betroffen ist, ein Flag gesetzt werden. Das bedeutet also, dass wenn eine Verkaufsaktion vom 13. bis zum 23. März 2014 läuft, zwei Wochen angekreuzt werden müssen, da sowohl die 11. als auch die 12. Kalenderwoche von der Aktion betroffen sind. In der Schnittstelle geht es einfach um die fortlaufenden Wochen (bis max. 52), es müssen als nur jeweils ein Kreuz in den ersten beiden Wochenfeldern gesetzt werden. Als "betroffen" gilt eine Woche, wenn in ihr an mindestens einem normalen Werktag (Mo - Fr) die Verkaufsaktion stattfindet.

Nun kann eine 10tägige Verkaufsaktionsdauer aber auch über 3 Wochen verteilt stattfinden, z.B. vom 14.03. bis 24.03.2014. In der 11. KW ist ein Freitag, in der 13. KW der Montag und in der 12. KW dazwischen sind alle Werktage betroffen.

Man kann also nicht einfach 10 Tage durch 7 Tage teilen, und meinen, dass dann zwei Wochen betroffen sein müssten.

Im Programm habe ich die Möglichkeit, mir über eine Funktion die Anzahl von Tagen bzw. (ganzen) Wochen zwischen zwei Datümern (von/bis) geben zu lassen.

Außerdem steht mir eine Funktion zur Verfügung, die mir zu jedem beliebigen Datum den Wochentag (also Mo, Die, Mi ...) zurückgibt.

Reicht das aus, um meine Aufgabe zu lösen?

Wenn ja, fällt jemandem ein Algorithmus für diese Aufgabe ein?

Vielen Dank für Eure Ideen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was spricht denn gegen den einfachsten Ansatz:

Über jede der 52 Wochen einzeln iterieren, das Datum des ersten Tags der Woche bestimmen (evtl. schon vorher aus einer Liste) und dann abgleichen, ob Tag bis Tag + 6 sich in einer Verkaufsaktion befindet. Genauso könntest du über jeden der 365 Tage iterieren und dann mit dem jeweiligen Datum im Verkaufsaktionenkalender vergleichen.

Alternativ könntest du das Startdatum und Enddatum (bei mehr als 7 Tagen immer Startdatum +6) von bekannten Verkaufsaktionen in seine 365-Tages-Version umwandeln (entweder per Algorithmus oder aus einer vorgefertigten Liste. Dann musst du nurnoch die Nummer des Tages per floor division durch 7 teilen und die Woche markieren.

Gruß,

Larsson

Bearbeitet von larsson
Link zu diesem Kommentar
Auf anderen Seiten teilen

P.S.: Hängt ein bisschen von der benutzten Sprache ab aber oft gibt's fertige Lösungen für die Konvertierung.

In Python wäre Datum zu Tag des Jahres zum Beispiel:

day_of_year = datetime.datetime.now().timetuple().tm_yday

Gruß

P.S.: Mir fällt grade auf, dass durch 7 teilen ja nonsense ist. Man muss das Datum des ersten Tages der ersten Woche im Jahr wissen und je nach Wochentag die Differenz addieren.

Wahrscheinlich gibt es in deiner Programmiersprache eine Standardbibliothek, die den derzeitigen Tag mit Wochennummer etc ausgibt, da würde ich erstmal nachschauen.

In Python: year, week, day = datetime.datetime.now().isocalendar()

Bearbeitet von larsson
Link zu diesem Kommentar
Auf anderen Seiten teilen

@lars (DerkleineEisbär)

hast du eine Funktion, die dir zurückgibt welche Woche das Datum ist?

Wenn ja dann hast du 3 Schritte.

a) herrausfinden wann die Woche beginnt bei der Funktion (Wochenbeginn = Montag oder Sonntag?)

1.) Wochentag und Woche des Anfangsdatums berechnen

wenn Wochentag = Werktag (Achtung wegen Sonntag/Montag) KW in Variable speichern

ansonsten KW=KW+1

2.) das gleiche für Enddatum tun

KW auch in Variable speichern (eventuell KW-1)

3.) für alle KW von (KW-Anfang) bis (KW-Ende) die Flags setzen.

Bearbeitet von Enno
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...