Datumsdifferenzen berechnen.
-
Hi,
Mal angenommen, ich hab 2 Daten, den 11.3. um 12:05 und denn 2.4. um 11:20, muss man die Tage da "manuell" durchgehen, oder gibts da eine einfachere Methode um z.B. die Minuten zwischen den Daten zu berechnen?
-
..
-
Waren keine Code-Tags mehr da?
-
In c++ in etwas so
string Datum::diffsec(string beginn,string ende) { time_t tbeginn,tende; struct tm stbeginn; struct tm stende; stbeginn.tm_year = atoi(beginn.substr(0,4).c_str())-1900; stbeginn.tm_mon = atoi(beginn.substr(5,2).c_str())-1; stbeginn.tm_mday = atoi(beginn.substr(8,2).c_str()); stbeginn.tm_hour = atoi(beginn.substr(11,2).c_str()); stbeginn.tm_min = atoi(beginn.substr(14,2).c_str()); stbeginn.tm_sec = atoi(beginn.substr(17,2).c_str()); stende.tm_year = atoi(ende.substr(0,4).c_str())-1900; stende.tm_mon = atoi(ende.substr(5,2).c_str())-1; stende.tm_mday = atoi(ende.substr(8,2).c_str()); stende.tm_hour = atoi(ende.substr(11,2).c_str()); stende.tm_min = atoi(ende.substr(14,2).c_str()); stende.tm_sec = atoi(ende.substr(17,2).c_str()); tbeginn = mktime(&stbeginn); tende = mktime(&stende); stringstream tempsek; tempsek << difftime(tende,tbeginn); return tempsek.str(); }
In C return der Sekunden
int sqldiffsec(char *beginn,char *ende) { time_t tbeginn,tende; struct tm stbeginn; struct tm stende; char tempstr[10]; int jahr = 0,monat = 0,tag = 0,stunde = 0,minute = 0,sekunde = 0; jahr = atoi(teilstring(tempstr,beginn,1,4))-1900; monat = atoi(teilstring(tempstr,beginn,6,2))-1; tag = atoi(teilstring(tempstr,beginn,9,2)); stunde = atoi(teilstring(tempstr,beginn,12,2)); minute = atoi(teilstring(tempstr,beginn,15,2)); sekunde = atoi(teilstring(tempstr,beginn,18,2)); stbeginn.tm_year = jahr; stbeginn.tm_mon = monat; stbeginn.tm_mday = tag; stbeginn.tm_hour = stunde; stbeginn.tm_min = minute; stbeginn.tm_sec = sekunde; jahr = atoi(teilstring(tempstr,ende,1,4))-1900; monat = atoi(teilstring(tempstr,ende,6,2))-1; tag = atoi(teilstring(tempstr,ende,9,2)); stunde = atoi(teilstring(tempstr,ende,12,2)); minute = atoi(teilstring(tempstr,ende,15,2)); sekunde = atoi(teilstring(tempstr,ende,18,2)); stende.tm_year = jahr; stende.tm_mon = monat; stende.tm_mday = tag; stende.tm_hour = stunde; stende.tm_min = minute; stende.tm_sec = sekunde; tbeginn = mktime(&stbeginn); tende = mktime(&stende); return difftime(tende,tbeginn); }
In MFC
CString CDatumclass::diffsec(CString beginn, CString ende) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); int jahrb = atoi(beginn.Left(4)); int monatb = atoi(beginn.Mid(5,2)); int tagb = atoi(beginn.Mid(8,2)); int stundeb = atoi(beginn.Mid(11,2)); int minuteb = atoi(beginn.Mid(14,2)); int sekundeb = atoi(beginn.Mid(17,2)); CTime startTime(jahrb,monatb,tagb,stundeb,minuteb,sekundeb); int jahre = atoi(ende.Left(4)); int monate = atoi(ende.Mid(5,2)); int tage = atoi(ende.Mid(8,2)); int stundee = atoi(ende.Mid(11,2)); int minutee = atoi(ende.Mid(14,2)); int sekundee = atoi(ende.Mid(17,2)); CTime endTime(jahre,monate,tage,stundee,minutee,sekundee); CTimeSpan elapsedTime = endTime - startTime; int sekunden = elapsedTime.GetTotalSeconds(); CString endsekunden; endsekunden.Format("%i",sekunden); return endsekunden; // Hier kann man auch die sekunden als int returnen }
-
..
-
Wow, danke, das sollte mehr als genügen, wär vielleicht was für die FAQ
-
Bin hier nicht dafür zuständig und die Frage ist da auch Wohin. MFC,WINAPI,C++,ANSI-C
Aber das muss ja kingruedi oder dEus entscheiden.[ Dieser Beitrag wurde am 12.01.2003 um 14:35 Uhr von Unix-Tom editiert. ]
-
Ich denke, man sollte es bei C++ einordnen, da man Hilfsklassen wie CString oder CTime ... problemlos mittels #include <afx.h> auch in Konsolen einsetzen kann, wie ich oben gezeigt habe.
-
Original erstellt von Erhard Henkes:
Ich denke, man sollte es bei C++ einordnen, da man Hilfsklassen wie CString oder CTime ... problemlos mittels #include <afx.h> auch in Konsolen einsetzen kann, wie ich oben gezeigt habe.no !
bei mfc, also im mfc forum oder hier ins faq
-
MFC wäre auch o.k.
-
Original erstellt von Erhard Henkes:
Ich denke, man sollte es bei C++ einordnen, da man Hilfsklassen wie CString oder CTime ... problemlos mittels #include <afx.h> auch in Konsolen einsetzen kann, wie ich oben gezeigt habe.Und unter Linux? Ist CString nicht eine MFC-Klasse?
Also ich fände auch das "Rund um..." am passendsten.