Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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.

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!

hat wirklich an Servicepack gelegen:eek: jetzt getzt! :bimei

thx :)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.