Zum Inhalt springen

Hilfe bei funktionsweise von time.h


Empfohlene Beiträge

Geschrieben

oh ich glaub that's it

hab das eben mal gegen getestet mit

int main (void)

{

	time_t zeitInSekunden;

	zeitInSekunden = 1225267606;

	struct tm *zeitVergangen;

	zeitVergangen = localtime(&zeitInSekunden);

	int zeitInMinuten = zeitInSekunden/60;

	int zeitInStunden = zeitInMinuten/60;

	int zeitInTagen = zeitInStunden/24;

	int zeitInWochen = zeitInTagen/7;

	int zeitInJahren = zeitInTagen/365;


	printf("Seit dem 01.01.1970 sind %d Sekunden vergangen.\n\n", zeitInSekunden);


	printf("Das sind %d Minuten\n", zeitInMinuten);

	printf("oder   %d Stunden\n", zeitInStunden);

	printf("oder    %d Tage\n", zeitInTagen);

	printf("oder     %d Wochen\n", zeitInWochen);

	printf("oder       %d Jahre\n\n", zeitInJahren);



	printf ("Seit dem 01.01.1970 sind vergangen:\n%d Jahre,\n%d Tage,\n%d Stunden,\n%d Minuten\nund %d Sekunden\n\n", zeitVergangen->tm_year-70, zeitVergangen->tm_yday, zeitVergangen->tm_hour, zeitVergangen->tm_min, zeitVergangen->tm_sec);


	return 0;

}

da kommt dann

Seit dem 01.01.1970 sind vergangen:

38 Jahre,

302 Tage,

9 Stunden,

6 Minuten

scheint eigentlich auch logisch..

bei meinem von eben mit time(&zeitInSekunden) kommt übrigens raus

Seit dem 01.01.1970 sind vergangen:

40 Jahre,

308 Tage,

14 Stunden,

49 Minuten

und 57 Sekunden

und 46 Sekunden

was ja auch denk ich mal richtig ist...

nur er meckert immer noch wegen dem time_t und dem %d -.-

Geschrieben
ne das meinte ich nicht... ist mir klar das wenn ich mit der funktion time arbeite er immer die aktuelle systemzeit nimmt...

deshalb hatte ich die auch raus genommen und für den "gegenversuch halt einfach geschrieben

zeitInSekunden = 1225267606

Das hatte ich überlesen, ich habe meine Antwort inzwischen geändert.

und ich bin auf 311 tage gekommen.. :/
Siehe oben. 311 ist jedenfalls besser als 6.

der haut mir da jetzt ne warnung raus.. von wegen ich hab das ja als time_t deklariert.. und würde da jetzt %d nutzen was falsch wäre denn das ist für int...

funktioniert trotzdem...

Muss aber nicht. Der Standard schreibt nicht vor, welcher Typ für time_t benutzt wird. Es ist nicht einmal festgelegt, wie dieser Wert codiert ist. Unter POSIX sind das die Sekunden seit dem 1.1.1970, unter Windows auch, aber das muss nicht so sein. Daher gibt es keine portable Möglichkeit, diesen Wert direkt mit printf auszugeben.
Geschrieben

:)

dann lasse ich das mal so..

würdest du sagen Aufgabe gelöst oder nur gut gemacht weil er mir da halt die warnung ausgibt .. ^^

ich wüsste jetzt nicht wie ich das umbasteln könnte damit die warnung verschwindet :/

Geschrieben
würdest du sagen Aufgabe gelöst oder nur gut gemacht
Kommt drauf an, ob du localtime benutzen solltest, oder das selbst ausrechnen.

ich wüsste jetzt nicht wie ich das umbasteln könnte damit die warnung verschwindet :/
Finde heraus, welcher Typ sich bei dir hinter time_t verbirgt, und benutz dafür das passende Formatfeld.
Geschrieben

naja verboten war es ja nun auch nicht :)

aber wenn ich das selbst ausrechnen hätte sollen..

wie hätte ich denn da die schaltjahre berücksichtigen sollen...

öhm und zu dem time_t sagt mir das liebe internet das hier:

time_t stellt einen long int Datentyp dar

richtig ?

joa und nun ?

Geschrieben
aber wenn ich das selbst ausrechnen hätte sollen..

wie hätte ich denn da die schaltjahre berücksichtigen sollen...

Zum Beispiel, indem du von deinen Sekunden nach und nach die richtigen Jahreslängen abziehst, bis kein ganzes Jahr mehr übrig ist.

öhm und zu dem time_t sagt mir das liebe internet das hier:

time_t stellt einen long int Datentyp dar

richtig ?

Wie gesagt, der Standard legt es nicht fest. Insofern ist irgendetwas, was du im Internet darüber findest, nicht besonders aussagekräftig, weil es auf dein System unter Umständen nicht zutrifft. long int ist allerdings sehr verbreitet.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...