Sekunden seit 1900



  • Interessehalber: Welche zum Beispiel?

    cheers, Swordfish



  • lippoliv schrieb:

    --- schrieb:

    deine Daten in Sec. umrechnen heute_sec - sec_1900 = sec_diff

    uiui... gut mitgelesen.. haha...

    Joa da musste deine eigene kleine ... kleine xD ... Funktion basteln...
    Ist Mordsarbeit, habe Zeitrechnung mal in Delphi gemacht... Einrechnen der Schaltjahre und so...

    Macht schon spass..

    das sind max(!) 85 Zeilen mit dem main Programm...



  • Swordfish schrieb:

    Interessehalber: Welche zum Beispiel?

    cheers, Swordfish

    wxWidgets -> wxDateTime -> wxTimeSpan/wxDateSpan

    Viel Spaß damit ...
    nurF



  • Das ganze Programm sind 108 Zeilen, von daher habt ihr recht, dass ist wirklcih nicht so viel.

    Warum ich die Zeitdifferenz möchte?? Weil man so leicht die gelebten Tage errechnen kann.

    Gruß Sebastian



  • floorball92 schrieb:

    Das ganze Programm sind 108 Zeilen, von daher habt ihr recht, dass ist wirklcih nicht so viel.

    Warum ich die Zeitdifferenz möchte?? Weil man so leicht die gelebten Tage errechnen kann.

    Gruß Sebastian

    Wieso nur 108 Zeilen? Wie gehst du vor? Was beachtest du? http://nopaste.info/ klatsch ma bitte rein, will mal sehen..

    Ja ich habe inna Schule son "Datumsrechner" geschrieben wo man Daten addieren und sobtrahieren udn so konnte... Auch die Tagesdifferenz errechnen... Und das war ziemlich viel (glaub ich)... Is ne weile her, vllt war das drumherum das meißte..



  • probiert das hier:

    // Reads RTC as seconds from timeoffset
    UINT32 GetTimeStamp (UINT32 timeoffset)
    {
        UINT8 i;
        UINT32 result = 0;
        unsigned idx;
    
        // days of each month 
        UINT8 md[] = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
        UINT16 year = CLOCK_READ_YEARS(); 
        UINT8 month = CLOCK_READ_MONTHS(); 
        UINT8 day = CLOCK_READ_DAYS(); 
        UINT8 hour = CLOCK_READ_HOURS(); 
        UINT8 minute = CLOCK_READ_MINUTES(); 
        UINT8 second = CLOCK_READ_SECONDS();
    
        // Make month an array index 
        idx = month - 1;
        if (idx > 11)
          idx = 0;
    
        // Leap year? adjust february 
        if (year%400 == 0 || (year%4 == 0 && year%100 !=0))
            md[1] = 29;
        else
            md[1] = 28;
    
        // Calculate days of years before 
        result = (UINT32)year * 365;
        if (year >= 1)
        {
            result += (year+3) / 4;
            result -= (year-1) / 100;
            result += (year-1) / 400;
        }
    
        // Start with 2007 a.d. 
        result = result - timeoffset; 
    
        // Loop thru each month, adding the days 
        for (i=0; i<idx; i++)
            result += md[i];
    
        // Add remaining days 
        result += day;
    
        // Convert to seconds, add all the other stuff 
        result = (result-1) * 86400L + (UINT32)hour * 3600L + (UINT32)minute * 60 + second;
    
        return result;
    }
    

    hat ein freund von mir vor jahren mal gebastelt.
    die makros CLOCK_READ... usw. müsst ihr durch eure eingabedaten ersetzen, also jahr, monat, tag, stunde, minute, sekunde.
    damit der wert ab 1900 zählt, muss 'timeoffset' so aussehen:

    #define TIMEOFFSET_1900 693961
    

    ^^also, keine 50 zeilen.
    🙂



  • hihi 👍
    Ich muss mal meinen Delphi-Code raussuchen... Ich glaub da hab ich ur zu viel gemacht (so wie immer) xD

    Mal sehen...

    Is auf jeden Fall super gelöst!



  • Joa, dass ist natürlich ne sehr schöne Lösung, ich bin ja auch noch ein anfänger, deshalb ist bei mir alles wahrscheinlich sehr umständliuch gemacht.

    http://rafb.net/p/5SNXc840.html

    Zum Vorgehen, denke das seiht man ganz klar, aber ich sage es auch nochmal kurz:

    Errechnen der Schaltjahre vor 2008
    Errechnen der Schaltjahre nach 2008
    Errechnen der Tage im Geburtsjahr
    Errechnen der Tage der restlichen Jahreä
    Errechen der Tage dieses Jahres ( Simpel _ )

    ->Alles addieren

    fertig!

    Denke mal recht umständlich aber war in meinen Augen der schnellste Weg.

    Werde aber nochmal versuchen, es zu verbessern.

    Gruß



  • floorball92 schrieb:

    Joa, dass ist natürlich ne sehr schöne Lösung, ich bin ja auch noch ein anfänger, deshalb ist bei mir alles wahrscheinlich sehr umständliuch gemacht.

    was willst du denn? dein code sieht doch gar nicht mal schlecht aus (vorausgesetzt natürlich, dass er auch funzt).
    🙂



  • fricky schrieb:

    was willst du denn? dein code sieht doch gar nicht mal schlecht aus (vorausgesetzt natürlich, dass er auch funzt).
    🙂

    ^^ Da stimm ich dir zu!



  • also ich habe es mit meinem Geburtsdatum ausprobiert und es dann manuel nachgerechnet und das hat gestimmt.

    Natürlich wirt die 50 Zeiler Version noch um einiges besser.

    ps: die Konsolenanwendungen beenden sich am Ende immer direkt selber, deshalb habe ich auch das 15 sec warten eingebaut. Gibt es nicht ne Andere Lösung?? EIn Freund sagt einfach ein getchar() einbauen, hat aber auch nix gebracht.



  • wenn getchar nicht klappt dann ist noch was im puffer, wie du den leer bekommst ist dann deine nächste aufgabe xD



  • fflush(stdin); ??



  • floorball92 schrieb:

    fflush(stdin); ??

    niemals!
    🙂



  • floorball92 schrieb:

    fflush(stdin); ??

    Ließt denn auf dieser gottvermalledeiten Welt keiner mehr Signaturen!?

    cheers, Swordfish

    \/



  • Swordfish schrieb:

    floorball92 schrieb:

    fflush(stdin); ??

    Ließt denn auf dieser gottvermalledeiten Welt keiner mehr Signaturen!?

    cheers, Swordfish

    \/

    doch ich für mein Leben gern.
    Auch von einem hier aus dem Forum http://travian-projekt.de/travian/img/stuff/NiceTry.gif xD



  • Tipp: Es ist etwas mit einer while Schleife 🙂


Anmelden zum Antworten