DBO Geschrieben 4. Juni 2002 Geschrieben 4. Juni 2002 Hi, ich habe eine Funktion geschrieben die aus 2 Datumsangaben, welche in Form von Strings übergeben werden, die Anzahl an Tagen berechnet, die dazwischen liegen. Eigentlich ja ganz einfach! Nur leider hab ich einen seltsamen effekt: Ich bekomme wenn ich von Datum her größer als der 31.3.2000 bin ist die Datumsdifferenz nicht korrekt! Durch Debuggen hab ich dann festgestellt, das er nur von 31.3.2000 auf 1.4.2000 die Datumsdifferenz nicht erhöht! Danach rechnet er allerdings wieder korrekt, d.h. es bleibt bei den o.g. Tag differenz!!!! Weis jemand woran das liegen könnte, und wie mans beheben kann(bitte keinen Workaround alla prüfe auf Datum x und erhöhe um einen Tag!) Hier mein Code: CTimeSpan DateDif(char *str_dat1, char *str_dat2) { char str_Tage[3], str_Monat[3], str_Jahr[5]; int iTage = 0, iMonat = 0, iJahr = 0; str_Tage[2] = 0x00; str_Monat[2] = 0x00; str_Jahr[4] = 0x00; strncpy(str_Tage, str_dat1, 2); strncpy(str_Monat, str_dat1 + 3, 2); strncpy(str_Jahr, str_dat1 + 6, 4); CTime FirstDate(atoi(str_Jahr), atoi(str_Monat), atoi(str_Tage), 12, 1, 1, 0); strncpy(str_Tage, str_dat2, 2); strncpy(str_Monat, str_dat2 + 3, 2); strncpy(str_Jahr, str_dat2 + 6, 4); //siehe oben FirstDate CTime SecondDate(atoi(str_Jahr), atoi(str_Monat), atoi(str_Tage), 12, 1, 1, 0); CTimeSpan DifTime = SecondDate - FirstDate; #ifdef _DEBUG long lDays = 0; char str_Msg[200]; lDays = DifTime.GetDays(); sprintf(str_Msg, "Zwischen den %s und den %s liegen %i Tage", str_dat1, str_dat2, lDays); MessageBox(NULL, str_Msg, "DateDif mit CTimeSpan", MB_OK); #endif return DifTime; } P.S: Betriebsystem ist Windows 98 P.P.S. In der Microsoft Knowledge Base hab ich schon geschaut, den Fehler mit den 29 Tagen in April von GetDays ist nicht Ausschlaggebend!!! thx 4 your help:e@sy sch*se falsche forum *sorry*:WD bitte verschieben!! Zitieren
Klotzkopp Geschrieben 4. Juni 2002 Geschrieben 4. Juni 2002 Original geschrieben von DBO bitte verschieben!! [x] Erledigt Nachtrag: Ich kann den Fehler nicht reproduzieren (VC++ 6 SP5, XP Prof). Kannst Du Wertepaare nennen, aus denen der Fehler deutlich wird? Lass Dir auch mal die Stunden ausgeben, vielleicht liegt es doch an der Sommerzeit. Zitieren
DBO Geschrieben 4. Juni 2002 Autor Geschrieben 4. Juni 2002 hab nämlich VC++ 6.0 SP2 Win 98!!!! evtl. liegt darin der Bug! Außerdem hab ich den Code auch noch an einen Kollegen von mir gegeben der über VC++ 6.0 SP2 Win 2000 verfügt...mal schaun ob er den nachvollziehen kann, wenn ja liegts wahrscheinlich am SP..... Von Ausgeben her läuft eigentlich alles korrekt, ich werde jedoch morgen nochmal alles genau durchgehen und euch dann bescheid geben! Zitieren
DBO Geschrieben 5. Juni 2002 Autor Geschrieben 5. Juni 2002 hat wirklich an Servicepack gelegen:eek: jetzt getzt! :bimei thx Zitieren
Empfohlene Beiträge
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.