Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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!:rolleyes:

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!!

Geschrieben
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.

Geschrieben

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.....:rolleyes:

Von Ausgeben her läuft eigentlich alles korrekt, ich werde jedoch morgen nochmal alles genau durchgehen und euch dann bescheid geben!

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...