Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

HTML Tage zählen

Hi,
ich zähle schon längere zeit die tage auf meiner homepage mit folgendem code:

<script language ="JavaScript">
function daysleft()
 {
   today = new Date()
   msPerDay = 24 * 60 * 60 * 1000

   pageCreated = new Date("January 1, 2008")
//   pageCreated.setYear(today.getYear())

   daysSince = (today.getTime() - pageCreated.getTime()) / msPerDay;
   daysSince = Math.round(daysSince)

   daystr = daysSince < 2 ? " day" : " days";

   document.write(" not announced since " + daysSince + daystr);

 }

daysleft()
</script>
Das funktionierte auch bis vor kurzem. Aber seit dem neuen jahr wird nicht mehr richtig gezählt. Von 1 Dezember 2007 bis 1 Januar 2008 werden 366tage gezählt.
Wie kann ich es wieder richtig zählen lassen?

Antworten zu HTML Tage zählen:

Mh... probiers mal so, dass du nicht "January" hinschreibst, sondern die Nummer des Monats (also 1).

Und bitte aender den namen der Variable von pageCreated auf irgendwas verstaendliches, z.B. "lastModified" oder sowas.
Ich hab die Message jetzt glaub ich schon 3 mal geaendert, weil ich es falsch verstanden habe.

Und zu dem new Date(...). An den Konstruktor kann ich mich nicht erinnern. Probiers lieber so:
new Date(Jahr, Monat, Tag);
oder wenn du es genauer willst (die Zeit):
new Date("Monat Tag, Jahr Stunden:Minuten:Sekunden");


Ausserdem laeuft Javascript doch am Client ab, schau mal auf deine Uhr, ob die auch richtig geht^^.   

« Letzte Änderung: 02.01.08, 11:26:44 von Fuxi »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,

also ich glaube dein Problem liegt im Verständnis der Funktion Math.round() welche die kaufmännisch gerundete Zahl zurückliefert (http://de.selfhtml.org/javascript/objekte/math.htm#round).
Wann hast du denn am 1. Januar geguckt, als er dir 366 zurücklieferte? War bestimmt zu einem Zeitpunkt, als nach dem Komma eine 5 stand... (also irgendwas nach 12 Uhr mittags). Gib dir doch als Test einfach mal die Variable "daysSince" vor dem Runden aus, dann bekommst du vielleicht ein besseres Verständnis dafür, was er wie und wann und warum macht. Kannst aber davon ausgehen, dass er das schon so richtig rechnet, wie du das ihm sagst :)

Mario 8)
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Also ich hab das jetzt mal so probiert wie Fuxi meinte und habs extra noch umgeschrieben ;D :

   lastModified = new Date("2007, 12, 2")Aber er zeigt mir trotzdem noch 356tage an.

@Mario:
Ja es war nach 12Uhr Mittags. Aber ich kappier nicht so recht was du mir sagen willst...
und ohne rundungsfunktion bekomme ich 355.643227349537tage raus

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,

naja, du bekommst 355.643227349537 Tage als Ergebnis. Auf diese Zahl rundest du kaufmännisch (siehe Link von oben). Was kommt also als Ergebnis heraus? Richtig: 356 Tage ;)

Mario 8)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

ja ich bekomme 356tage raus
aber das sind laut meiner rechnung nur 31tage und nicht 356

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Mh... probiers mal so, dass du nicht "January" hinschreibst, sondern die Nummer des Monats (also 1).

Genau da liegt eine potenzielle Fehlerquelle. Der 1. Monat des Jahres trägt den Index 0 und eine 12 gibt's so nicht wirklich ;)

greez 8)
JoSsiF 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Geht auch nicht  :'(
der zählt aber nur das jahr falsch nicht die monate oder tage das stimmt schon alles.
der denk von 2007bis 2008=365tage und dann zieht der noch ab bis er auf dem richtigen tag ist...

« Letzte Änderung: 02.01.08, 22:22:35 von Toni_15 »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Wäre vielleicht wieder mal Zeit für 'ne Portion Code...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

ne Portion code kommt sofort (ich schreibs extra nicht so: kot ;D ):

<script language ="JavaScript">
function daysleft()
 {
   today = new Date()
   msPerDay = 24 * 60 * 60 * 1000

   lastModified = new Date("2007, 11, 2")
//   lastModified.setYear(today.getYear())

   daysSince = (today.getTime() - lastModified.getTime()) / msPerDay;
   daysSince = Math.round(daysSince)

   daystr = daysSince < 2 ? " day" : " days";

   document.write(" not announced since " + daysSince + daystr);

 }

daysleft()
</script>


ergebins sieht dann so aus:
not announced since 357 days

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Anführungszeichen im Date-Konstruktor wegmachen wäre noch 'ne gute Idee ;)

Ratsam wäre es auch, mal die Befehle mit einem Semikolon abzuschließen, so wie sich das gehört.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

wie lustig find ich den das...
ohne anführungszeichen gehts ;D;D;D
danke

Huh, das ich da nicht gleich draufgekommen bin :-D.
Aber naja, er hat des ; bei 6 Zeilen vergessen (Kommentar mitgezaehlt). Und das mit dem "", sowas schleicht sich schnell ein. Aber die Frage ist doch, warum haste es ueberhaupt als String genommen^^? (ich erwarte keine Antowrt)

mfg.

P.S. Verwend zum testen Firefox und dann mach immer die Fehlerkonsole auf, (Extras-->Fehler-Konsole). Da wird dir so ein Fehler sicher angezeigt, und du musst dich net 3 Tage lang damit rumschlagen :-).

« Letzte Änderung: 03.01.08, 10:05:55 von Fuxi »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

2Tage ;D

Ja Ja meine liebe Fehlerkonsole.... http://www.computerhilfen.de/hilfen-7-212819-0.html

« Letzte Änderung: 03.01.08, 15:11:43 von Toni_15 »

« Bild/Symbol neben Homepage addresselive pages »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...