Dionysos211 Geschrieben 5. November 2010 Autor Geschrieben 5. November 2010 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 -.- Zitieren
Klotzkopp Geschrieben 5. November 2010 Geschrieben 5. November 2010 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 = 1225267606Das 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. Zitieren
Dionysos211 Geschrieben 5. November 2010 Autor Geschrieben 5. November 2010 also hab ich das richtig verstanden das ich die warnung ignorieren kann ? denn ändern in int kann ich das ja nicht dann würde er beim zeiger aufmucken .. oder ? Zitieren
Klotzkopp Geschrieben 5. November 2010 Geschrieben 5. November 2010 also hab ich das richtig verstanden das ich die warnung ignorieren kann ?Vermutlich zumindest bis 2038. Zitieren
Dionysos211 Geschrieben 5. November 2010 Autor Geschrieben 5. November 2010 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 :/ Zitieren
Klotzkopp Geschrieben 5. November 2010 Geschrieben 5. November 2010 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. Zitieren
Dionysos211 Geschrieben 5. November 2010 Autor Geschrieben 5. November 2010 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 ? Zitieren
Dionysos211 Geschrieben 5. November 2010 Autor Geschrieben 5. November 2010 ist das dann %ld ? Zitieren
Klotzkopp Geschrieben 5. November 2010 Geschrieben 5. November 2010 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. Zitieren
Empfohlene Beiträge
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.