Zeitabhängiges HTML-/Java-Script

New member
Hallo,
mir kam eine Idee, bei deren Umsetzung ich eure Hilfe benötige. Realisieren würde ich diese gerne mit HTML/Javascript, falls überhaupt möglich.
Es geht um Folgendes: Ich betreibe für meinem Clan aus einem MMORPG ein Forum, hier würde ich gerne eine Anzeige einrichten, die anzeigt, in welcher Schlacht-Season wir uns befinden.
Zur Erklärung:
Mit dem letzten Update wurden sogenannte Schlacht-Seasons eingeführt - die erste Season beginnt am 12.06.13 und eine Season dauert 3 Monate.
Also Season 1 beginnt am 12.06. und geht bis zum 12.-08. Season 2 vom 13.08. bis zum 13.10. usw.
Nun sollte folgendes angezeigt werden: "Momentan läuft Season 1" (evtl. mit Anzeige der Restzeit), am 13.08. wechselt die Anzeige automatisch zur Season 2.

Ich hoffe, dass ihr mir bei der Umsetzung behilflich sein könnt, bzw. dass so etwas überhaupt möglich ist.
 
Zuletzt bearbeitet:
Vielen Dank für die Antwort, die Dauer der Season 1 bekomme ich nun angezeigt, allerdings weiß ich nicht ganz, wie ich einen "if-else"-Befehl einbinde, sodass z.B. ab dem 13.08.12 'Season 2' angezeigt wird. Die Daten für die nächsten Seasons würde ich natürlich schon im Voraus eintragen, sodass die Anzeige nur noch im richtigen Moment umspringen muss.

Momentan sieht das Script so aus:
Code:
<html><head><title>SchlachtSeasonTicker</title>
</head><body>
<script type="text/javascript">
  var jetzt = new Date();
  var ZeitJetzt = jetzt.getTime() / 86400000;
  var Season1 = new Date(2013, 8, 12);
  var ZeitSeason1 = Season1.getTime() / 86400000;
  var RestdauerSeason1 = Math.floor(ZeitSeason1 - ZeitJetzt);
  document.write("Die Schlacht-Season 1 dauert noch " + RestdauerSeason1 + " Tage " );
</script>
</body></html>
 
Zuletzt bearbeitet:
So sollte es klappen:
Code:
var jetzt = new Date();
var ZeitJetzt = jetzt.getTime() / 86400000;
var endeSeason1 = new Date(2013, 8, 12);
var endeSeason2 = new Date(2013, 10, 13);

switch(true) {[INDENT]case (endeSeason1 >= jetzt):[/INDENT]
[INDENT=2]RestDauer(endeSeason1, 1);[/INDENT]
[INDENT=2]break;[/INDENT]
[INDENT]case (endeSeason2 >= jetzt):[/INDENT]
[INDENT=2]RestDauer(endeSeason2, 2);[/INDENT]
[INDENT=2]break;[/INDENT]
}


function RestDauer(dateSeason, seasonNr) {[INDENT]var ZeitSeason1 = dateSeason.getTime() / 86400000;
var RestdauerSeason1 = Math.floor(ZeitSeason1 - ZeitJetzt);

document.write("Die Schlacht-Season " + seasonNr + " dauert noch " + RestdauerSeason1 + " Tage " );
[/INDENT]
}
 
Ob das Script so funktioniert, wie ich es gerne hätte, kann ich zum jetzigen Zeitpunkt noch nicht sagen. Es sieht aber auf jeden Fall ganz gut aus. Danke hierfür. :)
Rückmeldung erhaltet ihr spätestens, wenn das Script zum angegebenen Datum nicht umschaltet.
 
Kannst du einfach testen, indem du statt
Code:
var jetzt = new Date();
z.B.
Code:
var jetzt = new Date(2013, 10, 24);
oder ein beliebiges anderes Datum, welches du testen willst nimmst. :)
 
Eine kleine Frage hätte ich noch:
Ich habe nun noch das Enddatum einer Season in die Anzeige eingebaut, ich hätte aber gerne, dass dieses nur das reine Datum ohne Tag und Uhrzeit anzeigt.
Wie bekomme ich das formatiert? Das aktuelle Datum habe ich mir bereits mühsam formatiert, da ich auf die Schnelle keine bessere Methode fand, allerdings lässt sich dies so nicht auf das Season-Datum übertragen.

Code:
<html><head><title>SchlachtSeasonTicker</title>
</head><body>
<script type="text/javascript">
var jetzt = new Date();
var ZeitJetzt = jetzt.getTime() / 86400000;

var AktuellerTag = jetzt.getDate()
var AktuellerMonat = jetzt.getMonth();
var AktuellesJahr = jetzt.getFullYear();
var AktuelleStunde = jetzt.getHours();
var AktuelleMinute = jetzt.getMinutes();
var Monat = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

var endeSeason1 = new Date(2013, 8, 12);
var endeSeason2 = new Date(2013, 10, 13);
var endeSeason3 = new Date(2013, 12, 14);
var endeSeason4 = new Date(2014, 2, 15);

switch(true) {
case (endeSeason1 >= jetzt):
Restdauer(endeSeason1, 1);
break;
case (endeSeason2 >= jetzt):
Restdauer(endeSeason2, 2);
break;
case (endeSeason3 >= jetzt):
Restdauer(endeSeason3, 3);
break;
case (endeSeason4 >= jetzt):
Restdauer(endeSeason4, 4);
break;
}

function Restdauer(dateSeason, seasonNr) {
var ZeitSeason = dateSeason.getTime() / 86400000;
var RestdauerSeason = Math.floor(ZeitSeason - ZeitJetzt);

document.write("Die Schlacht-Season " + seasonNr + " dauert noch " + RestdauerSeason + " Tag(e) und endet am " + dateSeason.toLocaleString() + " ");
document.write("<br> Heute haben wir den " + AktuellerTag + "." + Monat[AktuellerMonat] + "." + AktuellesJahr + ", " + AktuelleStunde + ":" + AktuelleMinute + " Uhr " );
}

</script>
</body></html>
 
Zuletzt bearbeitet:
Wie willst du denn das Datum angezeigt bekommen?
Code:
document.write("<br> Heute haben wir den " + AktuellerTag + "." + Monat[AktuellerMonat] + "." + AktuellesJahr + ", " + AktuelleStunde + ":" + AktuelleMinute + " Uhr " );
Da wäre es z.B. "19.Juni.2013, 12:00 Uhr ".
Ich glaube nicht, dass das dein Ziel ist. :D

JavaScript hat nativ keine Funktion, die ein Date formatieren kann, in .NET-Sprachen kann man z.B.
Code:
Date.toString("dd.MM.yyyy")
schreiben und würde 19.06.2013 rausbekommen. :)
Um das Datum in deinem Beispiel ohne Uhrzeit zu bekommen, kannst du es ja mit statt probieren.
 
Zuletzt bearbeitet:
Das mit der Uhrzeit im aktuellen Datum ist so beabsichtigt.
Code:
toLocaleDateString()
bringt im Enddatum das gewünschte Ergebnis. Nochmals vielen Dank hierfür. :)
 
Ich weiß, mir ging es darum, dass bei dem von dir geposteten Code, beim aktuellen Datum "19.Juni.2013" stehen würde. Daraus solltest du entweder 19.06.2013 oder eben 19. Juni 2013 machen und kein Zwischending. :D
Deshalb auch die Frage, wie du es denn nun gern hättest.
 

Online-Statistiken

Zurzeit aktive Mitglieder
0
Zurzeit aktive Gäste
340
Besucher gesamt
340

Neueste Themen

Beliebte Forum-Themen

X
Keine passende Antwort gefunden?