Frage zur time.h "header"



  • Hallo,

    ich hätte gerne das mir meine "Anwendung" das Datum (TTMMJJ Z.b. 270608)
    in eine "integer" variable speichert oder halt in einer "double".

    Ich schätze (denke mal) das, dass mit der time.h sehr gut klappen kann.Da ich mit dieser Funktion sehr gut voran gekommen bin,
    Nur fehlt mir einfach die richtige Syntax.

    aus dieser Zahl soll dann eine Wurzel gezogen werden, die dann dem Anwender (mit cout << oder so) angezeigt werden.

    Da ich vieles versucht habe und viele Wege zu guten (aber nicht brauchbaren) Ergebnissen brachte, habe ich gerade keinen aktuellen Code der sinn machen würde.

    bitte um Hilfe.



  • schau mal in die haederdatei rein da wirst du sehen das alles in

    struct tm
    {
    	int	tm_sec;		/* Seconds: 0-59 (K&R says 0-61?) */
    	int	tm_min;		/* Minutes: 0-59 */
    	int	tm_hour;	/* Hours since midnight: 0-23 */
    	int	tm_mday;	/* Day of the month: 1-31 */
    	int	tm_mon;		/* Months *since* january: 0-11 */
    	int	tm_year;	/* Years since 1900 */
    	int	tm_wday;	/* Days since Sunday (0-6) */
    	int	tm_yday;	/* Days since Jan. 1: 0-365 */
    	int	tm_isdst;	/* +1 Daylight Savings Time, 0 No DST,
    				 * -1 don't know */
    };
    

    abgelegt wird das zusammen rechen bekommst dann wohl selber hin



  • Das habe ich mir ja bereits durchgelesen und auch angewendet.
    Teilweise kommt da ein Zahlensalat raus, oder die Syntax stimmt nicht.

    Es soll nix zusammen gerechnet werden.Er soll den Tag (29) den Monat (06) und das Jahr (08) einfach an einander reihen (290608).



  • machs doch einfach so

    tm now;
    // now initialisieren und sowas alles, berehcnunen anstellen
    cout << now.tm_mday << "." << now.tm_mon << "." << now.year << endl;
    

    sollte so klappen oder nicht??



  • ach shit

    frage nicht gut durchgelesen...

    du willst das ganze als eine zahl haben?

    dann konvertier das ganze in ein char array und wandel das in ne zahl um



  • 😃 nicht schlimm.

    mhhhh....werde mich mal damit auseinander setzten.

    Danke



  • alsooooo:

    Bis hier hin bin ich gekommen.

    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    int zahl[2]; // Array1
    char bla[2]; // Array2
    int datum;   // Integer Variable "Datum"
    
    int main()
    
    {
        cin >> zahl[0]; // = Array1 wird mit Zahlen "gefüllt"
        cin >> zahl[1];
        cin >> zahl[2];
    
        bla[0] = (char) zahl[0];  // Array1 wird zu einem "char" umgewandelt und in Array2 gespeichert.
        bla[1] = (char) zahl[1];
        bla[2] = (char) zahl[2];
    
        char strcat(char bla[0], char bla[1], char bla[2]); /* Array2 wird zu einem einzigem "char" aneinader gereiht.
                                                               Dieser wird dann in bla[0] gespeichert */
    
        datum = (int) bla[0]; // "char" wird zu "integer"
    
        cout << bla[0]; // "integer" wird ausgegeben (das natürlich nicht klappt)
    
        getch();
        return 0;
    
    }
    

    Ich finde es ganz eindeutig aber mein Compiler kann
    warscheinlich kein "c++ " daher gibt er mir bei der Eingabe
    von den Zahlen "1" , "2" und "3" einen smiley aus. 😃

    Ich habe jeden Schritt mit einem Kommentar versehen.
    Bitte berichtigt mich, wenn ich etwas falsch sehe oder eine falshe Syntax eingegeben habe.



  • schau dir mal den ascii zeichensatz an
    könnte hielfreich sein^^



  • ich glaube in diesem falle handelt es sich nicht um den Ascii zeichensatz, oder?
    kann mir da keiner weiter helfen?



  • Hallo,

    wie wäre es damit:

    #include <iostream>
    #include <ctime>
    #include <conio.h>
    
    using namespace std;
    
    int main()
    
    {
        tm eingabeZeit;
        char datumsText[7] = {0,}; // Array für Datum im Format TTMMJJ, mit Nullen füllen
    
        cin >> eingabeZeit.tm_mday; // Tag von 1 - 31
        cin >> eingabeZeit.tm_mon // Monat als Zahl von 1 - 12
        cin >> eingabeZeit.tm_year // Jahr von 0 - 99
    
        --eingabeZeit.tm_mon; // eins weniger, weil strftime Monate von 0 - 11 erwartet
        strftime(datumsText, 7, "%d%m%y", &eingabeZeit);
    
        cout << datumsText ;
        getch();
        return 0;
    
    }
    

    Das kann man noch verbessern (Eingabeprüfung, weil strftime auch prüft, ob es sich um ein gültiges Datum handelt).

    MfG,

    Probe-Nutzer


Anmelden zum Antworten