date_inc_day immer nur -1 oder komischer Wert

    date_inc_day immer nur -1 oder komischer Wert

    Hallo,

    ich wollte die Daten einer Woche berechnen.
    Sprich das Datum von einer Woche von Mo bis So.
    Da gibt es natürlich das Problem, dass wenn bspw. der 31. ist und man 2 dazuzählt eine 33 heauskommt, es aber dann eigentlich eine 2 sein sollte.

    GML-Quellcode

    1. //Hiermit bekomme ich die Zahl des aktuellen Tages (Heute wäre es z.B. eine 30, weil heute der 30.08.2017 ist)
    2. cur_day = date_get_day(date_current_datetime());
    3. //Hiermit schaue ob welcher Wochentag ist für mein Switch-Statement (eher weniger wichtig für mein Problem!)
    4. cur_weekday = date_get_weekday(date_current_datetime());
    5. //Hiermit schaue ich, wieviele Tage der aktuelle Monat hat
    6. month_days = date_days_in_month(date_current_datetime());


    So, im Switch-Statement habe ich die Berechnung reingeklatscht, ich habe es mal für heute (Mi) rausgepickt:

    GML-Quellcode

    1. case 3:
    2. _mo = cur_day - 2;
    3. _di = cur_day - 1;
    4. if (cur_day + 0) > month_days { _mi = cur_day - month_days; } else { _mi = cur_day + 0; }
    5. if (cur_day + 1) > month_days { _do = cur_day - month_days; } else { _do = cur_day + 1; }
    6. if (cur_day + 2) > month_days { _fr = cur_day - month_days; } else { _fr = cur_day + 2; }
    7. if (cur_day + 3) > month_days { _sa = cur_day - month_days; } else { _sa = cur_day + 3; }
    8. if (cur_day + 4) > month_days { _so = cur_day - month_days; } else { _so = cur_day + 4; }
    9. break;


    Gehen wir mal vom letzen aus, also Sonntag:
    Wenn cur_day + 4 (30 + 4 = 34) größer ist als month_days (31) dann soll _so = 34 - 31, also 3 sein. Das würde passen, denn kommender Sonntag ist der 03.09.2017 und andernfalls soll er 4 Tage zum jetzigen Tag hinzurechnen (Im Bezug auf letzer Woche: Mi, 23 + 4 Tage = So, 27)

    Ich hoffe man konnte mir bis hierhin folgen. Leider funktioniert das nicht so. Es kommt immer eine -1 als Ergebnis.
    Ich habe mir in der GM-Hilfe date_inc_day angeschaut, dort ist beschrieben:

    GML-Quellcode

    1. // This would set "mynewdatetime" to the current date but with 365 days added.
    2. mynewdatetime = date_inc_day(date_current_datetime(), 365);


    Wenn ich das jetzige Datum (30) um 1 erhöhen würde, so dass der 31. rauskommen sollte, bekomme ich ebenfalls nur -1 als Ergebnis. (Wahrscheinlich wegen dem date_get_day)
    Wenn ich jetzt date_inc_day(date_current_datetime(), 1) schreibe, kommt als Ergebnis nur 42978.64. Damit kann ich mal so gar nichts anfangen.

    GML-Quellcode

    1. if (cur_day + 4) > month_days { _so = cur_day !!+ 4!! - month_days; } else { _so = cur_day + 4; }


    Du rechnest hier 30 - 31 also kommt eine -1 (wie du schon gesagt hast)
    • Bluetooth Multiplayer
    • Wasser App: play.google.com/store/apps/details?id=com.gaming_apps.water_physics_simulation
    • :shifty: :motz:
    Der Fehler hier ist, dass date_inc_day ein Zeitformat ausgibt und keinen Tag. Um das Tagesdatum raus zu bekommen musst du folgendes schreiben:

    GML-Quellcode

    1. mynewdatetime = date_get_day(date_inc_day(date_current_datetime(), +/- ANZAHL TAGE));


    Hier berechnet er erst das Datum abhängig von deinen Tagen und liest dann deinen Tag aus.