Datum Berechnungen mit Differenzen



  • Hallo,

    vielleicht kann mir jemand aus der Community weiterhelfen.

    Habe als Aufgabe fuer naechsten Freitag einen SourceCode bekommen, bei dem es es um die Berechnung einer Differenz aus 2 Datums ( Mehrzahl von Datum ?? ) 😕 geht.

    Ich soll mir dazu eine Function ueberlegen:
    Aufgabe:

    if vergleichDatum( “20-3-2004” , “3-6-2004”)
    text "mehr wie 20 tage diff"
    else
    text "weniger wie 20 tage diff."

    mit diesen Eingabewerten soll ich nun Berechnung, ob 20 Tage different ist oder nicht.

    Vielleicht hat jemand ein einfache Beispiel etc. wie man soetwas realisieren kann.

    Der vergleichDatum - Funktion wir das Datum als char uebergeben:

    int vergleichDatum( char *datum1, char *datum2)

    Fuer jede Hilfe bin ich sehr sehr danbkbar im vorauss.

    Gruesse

    Steffi



  • ohne das zu testen in etwa in der art
    beim übergeben müsstest du dann drauf achten das immer so in der art der string aussieht: 2 stellen tag 1 stelle trennzeichen 2stellen monat 1 stelle trennzeichen 4 stellen jahr (also z.b. "01.03.1987");

    //date1=>date2 return 1; > heisst es liegt näher an der Zukunft
    //date1<date2 return 0;
    int datecmp(const char* date1,const char* date2){
    
    	if(date1[6]*1000+date1[7]*100+date1[8]*10+date1[9]>date2[6]*1000+date2[7]*100+date2[8]*10+date[9]) return 1;
    	else if(date1[6]*1000+date1[7]*100+date1[8]*10+date1[9]<date2[6]*1000+date2[7]*100+date2[8]*10+date[9])return 0;
    	else{
    			if(date1[3]*10+date1[4]>date2[3]*10+date2[4]) return 1;
    			else if(date1[3]*10+date1[4]<date2[3]*10+date2[4])return 0;
    			else{
    
    				if(date1[0]*10+date1[1]>=date2[0]*10+date2[1]) return 1;
    				else return 0;
    
    			}
    	}
    return 0;
    }
    

    das vergleicht nur obs grösser oder kleiner ist.. wie mans mit 20 tage differenz macht solltest du dann hoffentlich selber hinbekommen



  • @windalf
    Und wie hilft deine Funktion weiter?

    @hilfesuchende
    Zu deiner ersten Frage: Es heißt nicht Datums (immer diese blöden englischen Einflüsse 🙄 ), sondern Daten (man glaubt es kaum).

    Nun zu deinem eigentlichen Problem.
    Schau dir mal folgendes in der time.h an (am besten in der Reihenfolge):

    struct tm
    mktime()
    difftime()

    Den Rest solltest du allein schaffen.


Anmelden zum Antworten