Wiederkehrende Ereignisse

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Macoun 2019 - Frühbucherrabatt bis 26.7.2019

  • Wiederkehrende Ereignisse

    Ich erklär das am Besten an einem Beispiel.

    Gegeben ist ein Startdatum: Dienstag, 19.02.2018
    Ab diesem Datum soll alle 2 Wochen Mittwochs was passieren. (Es kann auch alle 7 Wochen Donnerstag sein oder was weiss ich.)

    Wie bekomme ich heraus ob Mittwoch der 19.12.2018 ein Mittwoch ist an dem was passiert?
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • Mac & i Test Abo
  • Chris schrieb:


    Gegeben ist ein Startdatum: Dienstag, 19.02.2018
    Ab diesem Datum soll alle 2 Wochen Mittwochs was passieren.
    Mmmhh, also meine erste Idee wäre wie folgt (wenn vielleicht auch etwas hemdsärmelig):

    Sei A das Startdatum (19.02.2018), B das zu untersuchende Datum und n die Wochenfrequenz (2).
    1. Ermitteln des nächsten Mittwochs A' nach A; hierzu kannst Du leicht die von @MCDan genannte Klasse verwenden
    2. Errechnen der Tagesdifferenz d zwischen A' und B
    3. Das Ereignis soll geschehen, wenn d ganzzahlig durch 7 teilbar ist und n ergibt; damit ist B auch ein Mittwoch (Rest = 0) und n Wochen von A' entfernt; natürlich könnte man die Wochentagsprüfung auch wieder über die o. g. Methode durchführen
    Du musst Dir allerdings im klaren sein, wie sich n im Verhältnis zum Startdatum A verhalten soll: Nehmen wir an, wir hätten Donnerstag (haben wir ja auch): Beginnen dann die 14 Tage Wochenfrequenz in 6 Tagen oder gestern? Das hängt eben von der Aufgabenstellung ab.

    Solltest Du nicht ein bestimmtes Datum B prüfen wollen, sondern alle Kandidaten für B finden, iterierst Du eben von A' aus mit 7 * n... Aber das brauch' ich Dir ja nicht sagen :D

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Also wenn ich das richtig verstanden habe, dann ist das doch eigentlich recht einfach. Du suchst dir den ersten Mittwoch nach dem StartDatum und berechnest dann de Tage zwischen diesem und dem zieldarum. Ist der Wert durch 7 (für eine Woche, 14 für zwei Wochen etc) teilbar ist es ein Tag an dem was passiert.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Vielen Dank für den Schubs. Ihr glaubt ja nicht was ich gestern noch für Konstrukte programmiert habe.
    Ich habe leider keinen Hund mehr dem ich meine Probleme erklären kann, das hat früher viel geholfen. ^^

    Es sieht jetzt so aus:

    C-Quellcode

    1. - (BOOL) testDate: (NSDate *)testDate startDate: (NSDate *)startDate intervall: (NSInteger)intervall weekday: (NSInteger) weekday
    2. {
    3. NSCalendar *cal = [NSCalendar currentCalendar];
    4. NSDateComponents *tmp = [[NSDateComponents alloc] init];
    5. tmp.weekday = weekday;
    6. NSDate *aStrich = [cal nextDateAfterDate: startDate matchingComponents: tmp options: NSCalendarMatchNextTime];
    7. NSDateComponents *diffComps = [cal components: NSCalendarUnitDay fromDate: aStrich toDate: testDate options: 0];
    8. BOOL valid = (diffComps.day % (intervall * 7)) == 0;
    9. return valid;
    10. }
    Alles anzeigen
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.