• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Verstrichene Zeit seit einem bestimmten Datum anzeigen

Status
Für weitere Antworten geschlossen.

Mike0815

Neues Mitglied
Hallo Leute!

Bin neu was Internet betrifft (hab es erst seit 2 Monaten) und versuche gerade eine eigene page zu basteln...
Gerade stehe ich vor folgendem problem:

ich möchte die verstrichene zeit von einem bestimmten datum und uhrzeit anzeigen.

bsp:

10.1.2005 20:59
dieses datum/uhrzeit wird nicht angezeigt...

ich möchte aber die verstrichene zeit in form einer "stoppuhr" angezeigt bekommen, also.

1jahr, tage, stunden, min , sekunden.

wenn möglich soll die zeit nicht nur die zeit bis zum öffnen der page angezeigt werden sondern "live" weiterlaufen ...

wenn mir da wer helfen könnte wärs echt nett :p

_ _
| | | |
| |_| |__ __ __
| __| '_ \\ \/ / gleich mal vorweg!!
| |_| | | |> <
\__|_| |_/_/\_\


Moved: JavaScript (XraYSoLo)
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
willst du nu einen fertigen code oder nur eine anleitung?

anleitung:
datum festlegen, per (for)schleife durchlaufen lassen-->zählt "live" mit

code:
dazu hab ich jetzt echt keinen bock
 
Werbung:
@N10B: Mit ner for-schleife wird das niemals was werden...


Du musst das Datum aulesen, und mittels Date.parse() die Millisekunden seit dem 1.1.1970 bestimmen. Dann ziehst du die voneinander ab und teilst die zahl durch 1000. Dann hast du die Sekunden. Wenn du das nun durch 60 teilst, dann hast du die minuten usw. Allerdings gibt es da ein paar Probleme mit Tagen und Monaten, da man die nicht einfach so voneinander abziehen kann, da koennten negative Werte rauskommen. Fuer diesen Fall liest du die Differenz aus, und wenn das Ergebnis negativ ist, dann ziehst du beim naechsthoeheren wert (bei monaten waere das das Jahr) 1 ab.


Klingt kompliziert, sit aber eigentlich recht einfach ;P
 
Doch, ich denk schon, dass es was mit einer For-Schleife wird,
weil wie will man den Zähler denn sonst live mitlaufen lassen, ohne die seite jede sekunde neu laden zu lassen???
und wieso 1970 ??
Deine Möglichkeit wird schon gut sein, aber wenn der zähler mitlaufen soll, geht das nur mit einer schleife ;) ...
das datum zu bekommen ist ja wirklich nicht schwer. zu not baut man eine uhr um oder sowas.

liebe grüßle
n1oB
 
Das Problem ist nur folgendes:

Mal angenommen, das aeltere Datum ist

15.09.2005


und das neuere

16.08.2006


Nun kann man aeinfach 2006-2005 rechnen, und man hat ein ganzes jahr differenz raus - ist auch richtig so. Wenn du das gleiche allerdings beim Monat machst, dann bekommst -1 raus. Also musst du 12 addieren, um auf das richtige Ergebnis zu kommen. daraus folgt aber, dass du von der differenz der Jahre wieder eins abziehen musst. das gleiche Problem gibt es auch bei den Tagen, und da ist das ganze noch komplizierter.

Daher rechnet man am einfachsten die differenz der beiden Daten in Millisekunden aus, und errechnet daraus die Sekunden/ Minuten/ Stunden/ Tage (division durch 1000, dann durch 60, durch 60 und durch 24). Dann hat man schonmal die Differenz in Tagen, allerdings nicht in 2 Tage, 4 stunden und 3 minuten, sondern in 2tage, 51 stunden und 3063 sekunden. Wie du siehst ist das ganze nicht so einfach. Um hier jetyt noch das richtige Ergebnis rauszubekommen musst man (Stunden-Tage*24) rechnen, um die entsprechenden Tage und Stunden herauszufinden. Dann rechnet man noch (Minuten-Stunden*60) mit den aktuellen Stunden, um wieder das richtige zu bekommen. Mit den Sekunden kann man genauso verfahren. Die funktion ruft sich dann mittels setTimeout() selber nach 1 sekunde wieder auf. Das einzige Problem dabei: man hat eine anzeige in Tagen, Stunden, Minuten und Sekunden. Und genau an dieser Stelle faengts an kompliziert zu werden, da man fuer die Umrechnung von Tagen auf Monaten beachten muss, um welchen Monate es sich handelt usw.


Wie du siehst: einfach so ne schleife ist da nicht ;P

Im uebrigen wuerde eine schleife nur begrenzt oft durchlaufen, und auch keinen richtigen Takt haben. Wenn die Schlefe allerdings unendlich oft durchlaufen soll (z.b. while(true){}) dann gibt es ein Problem, da der Browser ueberlastet und abschmiert.
 
Werbung:
???

Anscheinend hab ich mir da viel zu viel vorgenommen....
aber naja irgendwann werd ich schon so weit sein..
auf jeden fall danke an alle...


:???:
 
/*vorweg mal, ich war grad aufm oktoberfest */

naja.
deine Möglichkeit passt ja, nur das ding soll ja live mitlaufen und dazu ist wieder die schleife geeignet-> nicht unendlich oft durchlaufen sondern nur einige tausend male ´, da der user nicht unendlich lang online bleiben wird.
und nach einigen tausend zyklen einfach einen window.reload() und von vorne

liebe grüßle
n1oB
 
Wann verstehst du es endlich: Wenn eine Schleife zu oft durchlaufen soll, dann schmiert der PC des Benutzers ab!!! Ausserdem dauert ein Schleifendurchlauf niemals genau eine Sekunde, die sind immer viel schneller (kannst ja mal ne Schleife machen, die 1000 mal "test" schreibt, dann siehste dass das wirklich schnell geht).

PHP:
function zeit(){
//hier irgendein funktionierender alghoritmus
setTimeout("zeit()",1000);
}

Du wirst bei saemtlichen funktionierenden Uhr-Scripte eine aehnliche Syntax vorfinden, die funkiotn ruft sich nach einer Sekunde selbst auf.



Ich glaube, ich bin der, der sich mit Javascript ein bisschen mehr auskennt ;P
 
Werbung:
jo, ich bezweifle auch nicht, dass du dich mit js besser auskennst. ich bin au wahrscheinlich einpaar tage jünger als du ;) und mach das erst seit vllt einem jahr und das nur aus spass.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben