/*zeitroutinen*/ #include #include #include #include #include char *wday[] = { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "??????" }; void test (void) { struct tm start, ausw, end, *Start; time_t tStart, tAusw, tEnd; int i; memset (&start, 0, sizeof(start)); memset (&ausw, 0, sizeof(ausw)); memset (&end, 0, sizeof(end)); // for(i=1; i <= 10; i++) { start.tm_year = 2008-1900; //min 1.1.1970 01:00:00 !!! Alles andere führt zu Fehler start.tm_mon = 2-1; start.tm_mday = 3; start.tm_hour = 11; start.tm_min = 29; start.tm_sec = 59; start.tm_isdst = 0; //es sind alle Felder definiert zu füllen, sonst entsteht undefinierter Wert der zu Unterschieden tStart = mktime (&start); //Sommer-Winterzeit führt. Auswertung damit nicht möglich, da 1 h Unterschied u.U. // time(&tStart); //wird hier die aktuelle Zeit reingenommen????? // tmStart = localtime(&tStart); end.tm_year = 2008-1900; end.tm_mon = 2-1; end.tm_mday = 4; end.tm_hour = 11; end.tm_min = 30; end.tm_sec = 30; end.tm_isdst = 0; tEnd = mktime (&end); ausw.tm_year = end.tm_year - start.tm_year; ausw.tm_mon = end.tm_mon - start.tm_mon; ausw.tm_yday=end.tm_yday - start.tm_yday; ausw.tm_mday = end.tm_mday - start.tm_mday; ausw.tm_hour = end.tm_hour - start.tm_hour; ausw.tm_min = end.tm_min - start.tm_min; ausw.tm_sec = end.tm_sec - start.tm_sec; tAusw=tEnd-tStart; // tAusw=time(&ausw); printf("EJ: %d, EM: %2d, ED: %2d, Eh: %2d, Em: %2d, Es: %2d, YD: %2d, SoWi: %d\r\nSJ: %d, SM: %2d, SD: %2d, Sh: %2d, Sm: %2d, Ss: %2d, YD: %2d, SoWi: %d\r\n", end.tm_year+1900, end.tm_mon+1, end.tm_mday, end.tm_hour, end.tm_min, end.tm_sec, end.tm_yday, end.tm_isdst, start.tm_year+1900, start.tm_mon+1, start.tm_mday, start.tm_hour, start.tm_min, start.tm_sec, start.tm_yday, start.tm_isdst); printf("AJ: %4d, AM: %2d, AD: %2d, Ah: %2d, Am: %2d, As: %2d, YD: %2d, SoWi: %d\r\n", // printf("SJ: %d\r\n", ausw.tm_year, ausw.tm_mon, ausw.tm_mday, ausw.tm_hour, ausw.tm_min, ausw.tm_sec, ausw.tm_yday, ausw.tm_isdst); printf("tEnd : %10d\r\ntStart: %10d\r\ntAusw : %10d\r\n", tEnd, tStart, tAusw); // time(&tStart)); // printf("%10d\r\n",tStart); //return 0; // } //end for } /* runtime.c */ void runtime (void) { clock_t prgstart, prgende; int c; prgstart=clock(); printf("Geben Sie etwas ein und beenden Sie mit #\n"); printf("\n > "); while((c=getchar())!= '#') putchar(c); prgende=clock(); printf("Die Programmlaufzeit betrug %.2f Sekunden\n", (float)(prgende-prgstart) / CLOCKS_PER_SEC); } void time1 (void) { #define clrscr() system("cls") time_t t; time(&t); while(1) { clrscr(); printf("%ld\n",t); printf("Mit bzw. beenden!! "); time(&t); } } struct tm *tmnow; void today(void) { time_t tnow; time(&tnow); tmnow = localtime(&tnow); printf("Heute ist der "); printf("%d.%d.%d\n", tmnow->tm_mday, tmnow->tm_mon + 1, tmnow->tm_year + 1900); } void time2(void) { int tag, monat, jahr; unsigned int i=0, tmp; // printf("Bitte gib Deinen Geburtstag ein!\n"); // printf("Tag : "); // scanf("%d", &tag); // printf("Monat : "); // scanf("%d", &monat); // printf("Jahr (jjjj) : "); // scanf("%d", &jahr); jahr=2008; monat=1; tag=31; today(); if(tmnow->tm_mon+1 < monat) { i = 1; tmp=tmnow->tm_mon+1-monat; monat=tmp+12; } else { tmp=tmnow->tm_mon+1-monat; monat=tmp; } if(monat == 12) { monat = 0; i = 0; } printf("Sie sind %d Jahre %d Monate %d Tage alt\n", tmnow->tm_year+1900-jahr-i,monat, tmnow->tm_mday-tag); } void time3(void) { struct tm time_check; int year, month, day; /* Jahr, Monat und Tag eingeben zum * Herausfinden des Wochentags */ printf("Geht erst ab 1.1.1970 01:00:00\r\n"); printf("Jahr : "); scanf("%d", &year); printf("Monat: "); scanf("%d", &month); printf("Tag : "); scanf("%d", &day); /* Wir füllen unsere Struktur struct tm time_check * mit Werten */ time_check.tm_year = year - 1900; time_check.tm_mon = month - 1; time_check.tm_mday = day; /* 00:00:01 Uhr */ time_check.tm_hour = 1; time_check.tm_min = 0; time_check.tm_sec = 0; time_check.tm_isdst = -1; printf("mktime.. %d\r\n",mktime(&time_check)); if(mktime(&time_check) == -1) time_check.tm_wday = 7; /* = Unbekannter Tag */ /* Der Tag des Datums wird ausgegeben */ printf("Dieser Tag ist/war ein %s\n", wday[time_check.tm_wday]); } /* //int main(int argc, char **argv) { void time4(void) { FILE *datei; time_t time1; struct tm *time2; char zeit[25]; int c; if(argc<2) { printf("Bitte Eingeben : %s textdatei.txt\n",*argv); return EXIT_FAILURE; } if((datei = fopen(*++argv,"w+")) == NULL) { printf("Konnte Datei : %s nicht öffnen!!!!\n",*argv); // return EXIT_FAILURE; } printf("Eingabe machen (mit '#' beenden)\n>"); /* Wir schreiben in unsere Datei und beenden diese * mit dem Zeichen '#' * while((c=getchar()) != '#') putc(c, datei); putc('\n', datei); /* Zuerst time_t-Format * time(&time1); printf("Heute ist %s und Sie haben eben die " "Datei %s geschlossen\n",ctime(&time1), *argv); /* Jetzt struct tm-Format mit asctime() * time1=time(NULL); time2=localtime(&time1); strcpy(zeit,asctime(time2)); /* Das Datum schreiben wir in die Datei... * fprintf(datei,"%s\n",zeit); fclose(datei); } */ void time5(void) { time_t start, stop; double diff; printf("Einen Augenblick bitte ...\n"); start=time(NULL); while((diff=difftime(stop=time(NULL),start)) != 5); printf("%.1f sek. vorbei!!\n",diff); } void time6(void) { struct tm *zeit; time_t sekunde; char string[80]; time(&sekunde); zeit = localtime(&sekunde); strftime(string, 80, "Es ist %H Uhr und %M Minuten (%Z) %A, %B %Y",zeit); printf("%s\n",string); } int main (int argc, char **argv) { int i; printf("Was moechten Sie tun?\r\n1: Testroutine\r\n2: Runtime\r\n3: Time 1\r\n4: Time 2 (Geburtstag)\r\n5: Time 3 (Wochentag)\r\n6: Time 4\r\n7: Time 5\r\n8: Time 6\r\n\r\n"); scanf("%d",&i); switch(i) { case 1: test(); break; case 2: runtime(); break; case 3: time1(); break; case 4: time2(); break; case 5: time3(); break; // case 6: time4(); // break; case 7: time5(); break; case 8: time6(); break; } //end switch return EXIT_SUCCESS; }