Hilfe bei "var eventdate" countdown

bast-art

Grünschnabel
Hallo!

Ich habe bei mir auf der Seite eine Eventlist, die die nächsten 10 Events aus dem Kalender untereinander darstellt.
Jetzt würde ich gern hinter jedes Event einen Countdown setzen, der anzeigt, wie viele Tage es noch bis zu dem Event sind.

Zudem würde ich dies gern automatisieren, so dass sich der Counter das Datum von Kalender holt, genau wie die Eventlist, hier also über die "{events.START_TIME}"

"{events.START_TIME}" hat folgende Ausgabe: "Do 13. Aug 2009, 00:00" - der Counter benötigt jedoch die Eingabe: "august 13, 2009 00:00:00 GMT"


Hier einmal der Countdown:
Code:
<script type="text/javascript">// <![CDATA[
var eventdate = new Date("January 2, 2010 00:00:00 GMT");
d=new Date();
count=Math.floor((eventdate.getTime()-d.getTime())/1000);
count=Math.floor(count/(60*60*24));
document.write(count);
// ]]></script>
Das einfache einfügen von "{events.START_TIME}" führt zu einem Nan (Not a Number) Fehler - logischerweise :P

Kann mir jemand sagen, ob es möglich ist, dass so zu verändern, dass "{events.START_TIME}" als Countdown Eingabe möglich ist!?

lg
Bast-art
 
Moin,

woher kommt denn dieses events.START_TIME überhaupt?

Das einfachste wäre es sicher, wenn du da mit einem Timestamp arbeiten würdest, statt mit einem formatiertem Datum.
 
Hi!

Das ganze ist in einem phpbb3 Forum mit calendar mod. Da das Forum bei einem gratis Hoster ist, habe ich keinerlei zugriff auf die php dateien im auf dem Server, ich kann lediglich die html dateien modifizieren.

Aufgefallen ist mir jetzt, dass der Countdown im Google Chrome (bez: Iron clone) richtig dargestellt wird, im IE7 und FF 3.5 bekomme ich jedoch die NaN Fehlermeldung.

lg
 
Hast du mal detailliertere Infos zu diesem calendar-mod parat, genaue Bezeichnung(es gibt da ja sicher eine Vielzahl verschiedener Module).
 
leider kann ich nicht viele Angaben machen, da ich wie gesagt keine ahunng habe was das für ein Mod ist.

hier ist aber mal ein link: http://anmmfw.userboard.org/forum.php
Dort kann man schonmal die Eventlist sehen.

was ich noch habe ist ja die html Datei. Die sieht wie folgt aus:

Code:
<!-- IF .events -->
	<table class="tablebg" width="100%" cellspacing="1">
	<tr>
                <th class="sleft"><b>Nächster Drecksack (Wartezeit)</b></th>
		<th class="sleft"><b>Wann kommt sie wieder?</b></th>
		<th class="sleft"><b>Tage noch übrig:</b></th>
	</tr>
	<!-- BEGIN events -->
		<tr>
<td class="row2"  class="lastpost"> <a href="{events.EVENT_URL}" title="<!-- IF events.ETYPE_DISPLAY_NAME -->{events.ETYPE_DISPLAY_NAME}: <!-- ENDIF -->{events.SUBJECT}"><span style="<!-- IF events.COLOR -->color:#{events.COLOR};<!-- ENDIF --> font-weight: bold;"><!-- IF events.ETYPE_DISPLAY_NAME -->{events.ETYPE_DISPLAY_NAME}: <!-- ENDIF -->{events.SUBJECT}</span><br /></a> </td>

		
		<td class="row2"  class="lastpost">{events.START_TIME}</td>
		<td class="row2"  class="lastpost">
<script type="text/javascript">// <![CDATA[
var eventdate = new Date("{events.END_TIME}:59 GMT");
d=new Date();
count=Math.floor((eventdate.getTime()-d.getTime())/1000);
count=Math.floor(count/(60*60*24));
document.write(count);
// ]]></script> Tage</td>
		</tr>
	<!-- END events -->
	</table>
<!-- ENDIF -->


Kannst du damit evtl. schon was anfangen?
Ich habe den Support vom Board auch schon kantaktiert, aber da muss ich sicher bis morgen abend auf Antwort warten :P

*vielen dank schonmal für deine Hilfe! :)*
 
wow krass, ja der scheint es zu sein :D DANKE!

Kannst du deine Aussagen evtl etwas konkretisieren? bisher verstehe ich noch nicht ganz was du meinst.
Ich verstehe das so, dass es auf das hinausläuft was ich vorhatte, aber an der umsetzung gescheitert bin...

lg
bast-art
 
Jo, es läuft auf das hinaus, was du meintest, hier nen Beispiel:
Code:
<script type="text/javascript">
function parseDate(strDate)
{
  p=/^\D+(\d+)\.\s+(\w+)\s+(\d{4}),\s+(\d{2}):(\d{2})/;
  strDate.match(p);
  m={'Jan':0,'Feb':1,'Mar':2,'Apr':3,'May':4,'Jun':5,'Jul':6,'Aug':7,'Sep':8,'Oct':9,'Nov':10,'Dec':11}
  return new Date(RegExp.$3, m[RegExp.$2], RegExp.$1, RegExp.$4, RegExp.$5, 0);
}
</script>

Die Funktion untersucht den String anhand eines regulären Ausdrucks und gibt ein Anhand der Ergebnisse erstelltes JS-Date-Objekt zurück.

Kurze Überprüfung, ob es funktioniert:
Code:
alert(parseDate('Do 13. Aug 2009, 00:00').toLocaleString());
Es sollte jetzt ein entsprechend deiner Systemeinstellung formatiertes Datum ausgegeben werden.

Den Counter kenne ich nicht, aber er sollte mit der Rückgabe der Funktion gut rechnen können, evtl. müsste man 1-2 Zeilen anpassen in dem Skript.

In der Funktion müsste m evtl. noch angepasst werden, aus dem von dir geposteten Code geht nicht hervor, ob da mit deutschen oder englischen Monatsabkürzungen gearbeitet wird.
 
Vielen Dank, dass du dir die Arbei machst und mir hilfst!

Leider kann ich mit dem was du da geschrieben hast nicht viel anfangen: confused:.
Ich habe leider keine Ahnung wie ich das in das script einbaue.

Ich habe mich versucht die letzten Stunden mehr und mehr in das Thema einzulesen und was ich rausbekommen hab ist, dass wenn ich das Datumsformat vom Forum von j. F Y, H:i auf F j, Y H:i ändere, dann wird immerhin schonmal der August erkannt.

Problem hier also:
- Das Forum nutzt deutsche Monatsnamen, das script braucht aber englische.
- Zudem hat das ganze Forum dann die Zeitanzeige: Monat, Tag, Jahr, was auch nicht unbedingt dem deutschen standart entspricht.

Ich muss mich also ransetzen und die einzelnen Monat übersetzen - hab aber keine Ahnung wie. (Evtl hat jemand einen Link, denn ich möchte ja nicht verlangen, dass jemand für mich die Arbeit erledigt.)
Zudem würde ich mich freuen, wenn ich das Forum wieder auf das alte Datumsformat zurück stellen kann...

lg
Bast-Art
 
Hi,

der Funktion von Sven musst du den String übergeben, den dir {events.START_TIME} liefert. Zurückgegeben wird dir ein zugehöriges gülitiges Date-Objekt.

Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>
<body>
<script type="text/javascript">
// <![CDATA[
var strDate = "Do 13. Aug 2009, 00:00"; // Übergabe durch {events.START_TIME}
var eventdate = parseDate(strDate);

d=new Date();
count=Math.floor((eventdate.getTime()-d.getTime())/1000);
count=Math.floor(count/(60*60*24));
document.write(count);

function parseDate(strDate){
  p=/^\D+(\d+)\.\s+(\w+)\s+(\d{4}),\s+(\d{2}):(\d{2})/;
  strDate.match(p);
  m={'Jan':0,'Feb':1,'Mar':2,'Apr':3,'May':4,'Jun':5,'Jul':6,'Aug':7,'Sep':8,'Oct':9,'Nov':10,'Dec':11}
  return new Date(RegExp.$3, m[RegExp.$2], RegExp.$1, RegExp.$4, RegExp.$5, 0);
}
// ]]>
</script>
</body>
</html>

Ciao
Quaese
 

Neue Beiträge

Zurück