WinFuture-Forum.de: Timestamp - Umrechnung... - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Timestamp - Umrechnung... Hilfe! Was mache ich hier?


#1 Mitglied ist offline   Mr_Maniac 

  • Gruppe: aktive Mitglieder
  • Beiträge: 770
  • Beigetreten: 29. Juli 02
  • Reputation: 1
  • Geschlecht:Männlich
  • Interessen:Vieles rund um den Computer
    Musik

geschrieben 24. Juli 2005 - 17:40

Hallo!
Ich habe ein minder großes Problem (was heißen soll, dass es nicht überlebenswichtig ist).
Ich habe heute mal ein PHP-Skript geschrieben, dass mir ausrechnen soll, wie lange der Start des UNIX-Timestamps (01.01.1970 00:00 Uhr) zurückliegt...
Fragt mich nicht warum... Denn das weiß ich selbst nicht ^_^

Auf jeden Fall Stoße ich da auf folgendes Problem:
Wenn ich für das Jahr generell 365 Tage und für einen Monat generell 30 Tage kalkuliere, werden mir die Jahre, Monate, Tage, Stunden, Minuten und Sekunden, die seit dem Start des Timestamps vergangen sind fast korrekt angezeigt (ein Monat zuviel?)... Jedoch fehlen drei Wochen...

Dann dachte ich mir: Klar, ich muss den Monat genauer berechnen... Also "365/12"...
Ergebnis: Nun fehlen auch noch die Tage... Sowohl bei Wochen als auch bei Tagen werden nun Null (0) angezeigt...

Okay... Dann war mir klar, dass das Jahr ja nicht genau 365 Tage hat. Also schnell bei Wikipedia reingeschaut und die mittlere Jahreslänge herausgesucht...
Diesmal: Jahre, Monate und Wochen werden richtig berechnet, jedoch der Rest falsch...

Da ich mir dachte, dass meine Formel falsch sein könnte, habe ich eine zweite hinzugefügt, die jedoch das gleiche ausgibt...

Gibt es eine Lösung für das Problem (das "wurmt" mich jetzt) oder kann man das nicht genau berechnen?

Hier der Quellcode:
<?php
  include '../includes/Head.inc';

  /* Umrechnungsfaktoren */
  $umminute = 60;
  $umstunde = 3600;
  $umtag = 86400;
  $umwoche = 604800;
  $umjahr = 31556952; /* Laut Wikipedia hat das durchschnittliche Jahr 365 Tage, 5 Stunden, 49 Minuten und 12 Sekunden. */
  $ummonat = $umjahr / 12;

  /* time() in Minuten, Stunden, Tagen, Wochen, Monaten und Jahren */
  $minuten = time() / $umminute;
  $stunden = time() / $umstunde;
  $tage = time() / $umtag;
  $wochen = time() / $umwoche;
  $monate = time() / $ummonat;
  $jahre = time() / $umjahr;

  echo "<table>";
  echo "<tr><td>time():</td><td>" . time() . "</td></tr>";
  echo "<tr><td>time() in Minuten:</td><td>" . $minuten . "</td></tr>";
  echo "<tr><td>time() in Stunden:</td><td>" . $stunden . "</td></tr>";
  echo "<tr><td>time() in Tagen:</td><td>" . $tage . "</td></tr>";
  echo "<tr><td>time() in Wochen:</td><td>" . $wochen . "</td></tr>";
  echo "<tr><td>time() in Monaten:</td><td>" . $monate . "</td></tr>";
  echo "<tr><td>time() in Jahren:</td><td>" . $jahre . "</td></tr>";
  echo "</table>";

  /*
    Seit dem 01.01.1970 sind ... vergangen - Versuch 1
  */
  $bla = floor($jahre) . " Jahre, ";
  $bla = $bla . floor((time() % $umjahr)/$ummonat) . " Monate, ";
  $bla = $bla . floor(((time() % $umjahr)%$ummonat)/$umwoche) . " Wochen, ";
  $bla = $bla . floor((((time() % $umjahr)%$ummonat)%$umwoche)/$umtag) . " Tage, ";
  $bla = $bla . floor(((((time() % $umjahr)%$ummonat)%$umwoche)%$umtag)/$umstunde) . " Stunden, ";
  $bla = $bla . floor((((((time() % $umjahr)%$ummonat)%$umwoche)%$umtag)%$umstunde)/$umminute) . " Minuten und ";
  $bla = $bla . floor(((((((time() % $umjahr)%$ummonat)%$umwoche)%$umtag)%$umstunde)%$umminute)) . " Sekunden <br><br>";
  echo $bla;

  /*
    Seit dem 01.01.1970 sind ... vergangen - Versuch 2
  */
  $monate2 = floor((time() - (floor($jahre)*$umjahr))/$ummonat);
  $wochen2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat))/$umwoche);
  $tage2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat) - ($wochen2*$umwoche))/$umtag);
  $stunden2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat) - ($wochen2*$umwoche) - ($tage2*$umtag))/$umstunde);
  $minuten2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat) - ($wochen2*$umwoche) - ($tage2*$umtag) - ($stunden2*$umstunde))/$umminute);
  $sekunden2 = floor((time() - (floor($jahre)*$umjahr) - ($monate2*$ummonat) - ($wochen2*$umwoche) - ($tage2*$umtag) - ($stunden2*$umstunde) - ($minuten2*$umminute)));

  $bla2 = floor($jahre) . " Jahre, ";
  $bla2 = $bla2 . $monate2 . " Monate, ";
  $bla2 = $bla2 . $wochen2 . " Wochen, ";
  $bla2 = $bla2 . $tage2 . " Tage, ";
  $bla2 = $bla2 . $stunden2 . " Stunden, ";
  $bla2 = $bla2 . $minuten2 . " Minuten und ";
  $bla2 = $bla2 . $sekunden2 . " Sekunden <br><br>";

  echo $bla2;

  include '../includes/Foot.htm';
?>


EDIT:
Hier kann man sich das ganze mal ansehen (die Zahlen die dabei verwendet werden sind momentan die gleichen, die ihr hier seht):
Timestamp Umrechnung

Dieser Beitrag wurde von Mr_Maniac bearbeitet: 24. Juli 2005 - 18:09

0

Anzeige



#2 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 24. Juli 2005 - 18:38

hm, die monate stimmen nicht. was die wochen angeht ... seh das nicht zu eng, das jahr hat schließlich auch nicht ganz genau 52 wochen. da kommt es im laufe der zeit schon zu unstimmigkeiten.

da der erste monat nicht der 0. sondern der 1. ist, muss die monatsrechnung so aussehen:
floor((time() % $umjahr)/$ummonat)+1
I'm mó. mo's good twin.
0

#3 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 24. Juli 2005 - 18:44

Das heir wäre meine (simple) Variante. Weiß nicht ob das Ergebnis stimmt, aber mir würde es reichen :D

echo 'Es sind '.(date('Y')-date('Y',0)).' Jahre, '.(date('n')-date('n',0)).' Monate, '.(date('j')-date('j',0)).' Tage, '.(date('H')-date('H',0)).' Stunden, '.(date('i')-date('i',0)).' Minuten und '.(date('s')-date('s',0)).' Sekunden vergangen.';

Dieser Beitrag wurde von Floele bearbeitet: 24. Juli 2005 - 18:55

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0