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!

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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