Frage zum Datumauslesen



  • Folgendes:
    Ich habe eine Kundenverwaltung geschrieben in der auch gespeichert ist wenn ein Kunde über einen Gewissen Zeitraum bezahlen muss (Jedes Jahr, an einem bestimmen Tag). Nun wollte ich gleich ncoh eien Erinnerungsfunktion integrieren, welceh angibt das der Kunde vor 5,4,3,2,1 Tage hätte Zahlen müssen, Heute zahlen muss und in 1,2,3,4,5 Tagne Zahlen muss.
    Das geht alles soweit, jedoch wenn er zum Beispiel am 02.04. Zahlen muss und wir haben den 30.03. gibt er nicht aus das der Kunde in 3 Tagen zahlen muss.
    Deshalb meine Frage:
    Wie bewirke ich, dass er auch Monat übergreifend das ganze Prüft, ohne 1000 Schleifen reinzubasteln?

    MFG Snow



  • Arbeite mit dem Unix-Timestamp, damit lässt es sich sekundengenau rechnen. 😉

    Gut Schuß
    VuuRWerK 😉



  • VuuRWerK schrieb:

    Arbeite mit dem Unix-Timestamp, damit lässt es sich sekundengenau rechnen. 😉

    Gut Schuß
    VuuRWerK 😉

    Hab mir das mal angeschaut, aber so richtig kann ich damit nix anfangen, zumidenst was die Lösung meiens Problems angeht! 😕

    MFG Snow



  • Da ich ja nicht weiß wie Du Deine Daten hälst ob als tm structure aus dem ctime-Header oder anders hätte ich einen Vorschlag mit boost, wenn Du gestattest 🙂

    #include <boost/cstdlib.hpp>
    #include <boost/date_time/gregorian/gregorian.hpp>
    #include <iostream>
    
    int main() {
    	using namespace boost::gregorian;
    	date today(2009, 03, 30); // we assume this is today ;)
    	date call_date(2009, 04, 2);// the call date
    	days days_to_call_date = today - call_date;
    
    	if (days_to_call_date.days() < 0)
    		std::cout << abs(days_to_call_date.days()) << " days till call date!"
    				<< std::endl;
    	else if (days_to_call_date.days() > 0)
    		std::cout << abs(days_to_call_date.days()) << " days after call date!"
    				<< std::endl;
    	else
    		std::cout << "Today is call date!!!" << std::endl;
    
    	return 0;
    }
    

    Ansonsten gibt es im ctime-Header diverse Funktionen wie time, localtime, mktime usw. mit denen Du wiederum arbeiten kannst. Mehr infos hier.

    Gut Schuß
    VuuRWerK 😉



  • VuuRWerK schrieb:

    Da ich ja nicht weiß wie Du Deine Daten hälst ob als tm structure aus dem ctime-Header oder anders hätte ich einen Vorschlag mit boost, wenn Du gestattest 🙂

    #include <boost/cstdlib.hpp>
    #include <boost/date_time/gregorian/gregorian.hpp>
    #include <iostream>
    
    int main() {
    	using namespace boost::gregorian;
    	date today(2009, 03, 30); // we assume this is today ;)
    	date call_date(2009, 04, 2);// the call date
    	days days_to_call_date = today - call_date;
    
    	if (days_to_call_date.days() < 0)
    		std::cout << abs(days_to_call_date.days()) << " days till call date!"
    				<< std::endl;
    	else if (days_to_call_date.days() > 0)
    		std::cout << abs(days_to_call_date.days()) << " days after call date!"
    				<< std::endl;
    	else
    		std::cout << "Today is call date!!!" << std::endl;
    
    	return 0;
    }
    

    Ansonsten gibt es im ctime-Header diverse Funktionen wie time, localtime, mktime usw. mit denen Du wiederum arbeiten kannst. Mehr infos hier.

    Gut Schuß
    VuuRWerK 😉

    Jo ich beziehe das ganze aus der time.h bzw. wchar.h. Zum Beispiel:

    printf("\tUhrzeit: %d:%0d:%d\n",tmp->tm_hour,tmp->tm_min,tmp->tm_sec);
    printf("\tDatum: %d.%d.%d\n\n\n", tmp->tm_mday, tmp->tm_mon+1, tmp->tm_year+1900);
    

    Oder hier bei dem Zahlungsperioden-Vergleich:

    else if((dataArray[k].po.cusDay==tmp->tm_mday+5)&(tmp->tm_mon+1==dataArray[k].po.cusMon))
    				{
    				cout<<"\tIn 5 Tagen, am "<<dataArray[k].po.cusDay<<"."<<dataArray[k].po.cusMon<<", muss der Kunde: "<<dataArray[k].getNICKNAME()<<"\n\t"<<dataArray[k].po.amount<<" EURO bezahlen!\n\n"<<endl;
    				}
    


  • Snowfey schrieb:

    VuuRWerK schrieb:

    Da ich ja nicht weiß wie Du Deine Daten hälst ob als tm structure aus dem ctime-Header oder anders hätte ich einen Vorschlag mit boost, wenn Du gestattest 🙂

    #include <boost/cstdlib.hpp>
    #include <boost/date_time/gregorian/gregorian.hpp>
    #include <iostream>
    
    int main() {
    	using namespace boost::gregorian;
    	date today(2009, 03, 30); // we assume this is today ;)
    	date call_date(2009, 04, 2);// the call date
    	days days_to_call_date = today - call_date;
    
    	if (days_to_call_date.days() < 0)
    		std::cout << abs(days_to_call_date.days()) << " days till call date!"
    				<< std::endl;
    	else if (days_to_call_date.days() > 0)
    		std::cout << abs(days_to_call_date.days()) << " days after call date!"
    				<< std::endl;
    	else
    		std::cout << "Today is call date!!!" << std::endl;
    
    	return 0;
    }
    

    Ansonsten gibt es im ctime-Header diverse Funktionen wie time, localtime, mktime usw. mit denen Du wiederum arbeiten kannst. Mehr infos hier.

    Gut Schuß
    VuuRWerK 😉

    Jo ich beziehe das ganze aus der time.h bzw. wchar.h. Zum Beispiel:

    printf("\tUhrzeit: %d:%0d:%d\n",tmp->tm_hour,tmp->tm_min,tmp->tm_sec);
    printf("\tDatum: %d.%d.%d\n\n\n", tmp->tm_mday, tmp->tm_mon+1, tmp->tm_year+1900);
    

    Oder hier bei dem Zahlungsperioden-Vergleich:

    else if((dataArray[k].po.cusDay==tmp->tm_mday+5)&(tmp->tm_mon+1==dataArray[k].po.cusMon))
    				{
    				cout<<"\tIn 5 Tagen, am "<<dataArray[k].po.cusDay<<"."<<dataArray[k].po.cusMon<<", muss der Kunde: "<<dataArray[k].getNICKNAME()<<"\n\t"<<dataArray[k].po.amount<<" EURO bezahlen!\n\n"<<endl;
    				}
    

    programmierst du C oder C++?

    bb



  • C++ in Visial Studio, aber ich programmier erst seit einem Jahr... naja 3/4 jahr 🙂



  • Snowfey schrieb:

    C++ in Visial Studio, aber ich programmier erst seit einem Jahr... naja 3/4 jahr 🙂

    Weil sich deine Header nämlich nach C anhören (C++ standard header haben keine Endung)
    und auch dein an sich Code kein Stück nach C++ aussieht ^^

    bb



  • Ja, ich lerne es ja noch und bei unserer Ausbildung haben wir es so gelernt, bzw. lernen es noch und der Dozent bezeichent es auch als C++ im Ausbildungsvertrag stehts auch drinne.
    Aber kann mir da eh noch keien Meinung bilden, bin ja nun mehr oder minder noch Noob was Programmieren angeht.


Log in to reply