Zeitüberprüfung mit XML und Jqueryausgabe

Blaubär

Mitglied
Hallo Nochmal
Das Laden und Ausgeben der Daten klappt ja jetzt erste Sahne :D, nun dachte ich mir, es wäre prima zu bestimmten Einträgen einen Zeitlichen Abschnitt angeben zu können, der dann, sollte man sich aktuell in diesem Zeitraum befinden, eine "Meldung" ausgibt (vielleicht als X, oder ein roter Punkt im generierten Listview)
Die Zeiträume kommen, wenn sie vorkommen, nur ein mal im Jahr vor.
Grundsätzlich frage ich mich, wie sollte ich den Zeitraum in meiner Xml am besten angeben/formatieren, um dies am einfachsten auslesen und bearbeiten zu können. Macht es Sinn das evtl. so zu machen:

HTML:
<?xml version="1.0" encoding="utf-8" ?>
<media>
    <liste id="001" title="Test 1">
        <description>Bezeichnung 1</description>
        <zeit>01.05. - 06.07.</zeit>
    </liste>
 
    <liste id="002" title="Test 2">
        <description>Bezeichnung 2</description>
        <zeit>immer</zeit>
    </liste>
	
    <liste id="003" title="Test 3">
        <description>Bezeichnung 3</description>
        <zeit>nie</zeit>
    </liste>
	
    <liste id="004" title="Test 4">
        <description>Bezeichnung 4</description>
        <zeit>12.12. - 15.02.</zeit>
    </liste>
</media>
Oder sollte das dann in Form von "Millisekunden" (vielleicht mit .now?) bearbeitet werden, was bei der Dateneinpflege ins Xml natürlich schon etwas kompliziert wäre...
Ich kann das als Neuling leider auch nicht im Umfang ganz abschätzen, deshalb stellt sich auch die Frage, ob das noch relativ einfach umzusetzen ist, oder ob das dann schon alles zu heftig wird. Die Suche dazu im Netz (und hier) hat mich irgendwie nicht weiter gebracht, habe leider keine Ansätze gefunden die hierfür helfen würden - oder ich habe zu dusselig gesucht...?
(Hätte das jetzt in ein extra Thread gemusst?)

LG, Blaubär
 
Hallo,
ich hab mal ein neues Thema draus gemacht.

Die Daten aus der XML würde ich in eine Variable schreiben und dann entsprechend benötigt in ein Zeitformat umwandeln. Auf dieses Datum prüft dann dein Script udn gibt etwas bestimmtes bei true aus.

Hier könnte helfen: http://www.datejs.com/
Hier scheint es aber ein Problem bei der Verwendung von jQuery Ui Datepicker zu geben.

Oder du verwendest ja eh jquery dann kannst du die Datepicker UI Funktion parseDate verwenden. Dies wandelt deinen String in ein Zeitformat um.

Javascript:
var d = $.datepicker.parseDate("DD, MM dd, yy",  "Sunday, February 28, 2010");
var datestrInNewFormat = $.datepicker.formatDate( "mm/dd/yy", d);

Das erste parst deinen String und das zweite wandelt es in ein Zeitformat deiner Wahl um.
Dieses Datum überprüfst du dann.

HIer hilft dir vielleicht auch der Beitrag aus dem Forum weiter:
http://www.tutorials.de/javascript-ajax/240898-datumsvergleich.html

Viele Grüße
 
Hallo Jan,

danke für die Antwort, und sorry dass ich nicht gleich einen extra Thread dafür gemacht habe. Ich hatte das eigentlich schon soweit für ein extra Thread "vorbereitet", dann wurde ich aber unsicher, weil ich ein paar Tuts gesehen hatte, wo es hiess, nicht immer gleich einen neuen Tread aufmachen...
Anyway, ich habe gerade noch ein kleines Problem einzuschätzen, wie ich mein Datumsformat aufbereiten muss, denn ich finde eigentlich immer Angaben, in denen auch das Jahr mit verarbeitet wird, was ich ja in meinem Fall eigentlich nicht brauche - oder lasse ich das Jahr dann "einfach untergehen"?
Und eine weitere Frage ist: Darf ich das dann so im Xml angeben: <zeit>12.12. - 15.02.</zeit>,
oder muss das dann aufgeteilt werden pro Xml-Node, wie so z.B.
Code:
<zeit1>12.12.</zeit1>
<zeit2>15.02.</zeit2>
Macht es eigentlich einen Unterschied, wenn ich einen Zeitraum vergleiche, in dem ja ein Jahreswechsel enthalten ist (wie oben)?
Also konkret, gibt es hier evtl. Probleme im Vergleich:
01.05. - 06.07. zu 12.12. - 15.02.
Sorry für die vielen Fragen!
Liebe Grüße
Blaubär
 
Hallo zusammen,

melde mich jetzt mal zurück und wollte noch mal auf mein hier besprochenes Problem eingehen.
Ich habe jetzt eine Version gebastelt, die eigentlich ganz prima funktioniert - zum Teil zumindest.
Ich hole mir aus der Xml, wie in meinem letzten Post beschrieben, das Datum aus 2 Xml-Einträgen,
also "starter" und "ende" und so weiter:
Das Ganze sieht so aus:
PHP:
var startMonat = starter.substring(3, 5);
				var startTag = starter.substring(0, 2);
				//-------------------------------------------------
				var endeMonat = ende.substring(3, 5);
				var endeTag = ende.substring(0, 2);
				//-------------------------------------------------
				var startMonatRes = parseInt(startMonat, 10);
				var startTagRes = parseInt(startTag, 10);
				var endeMonatRes = parseInt(endeMonat, 10);
				var endeTagRes = parseInt(endeTag, 10);
				//-------------------------------------------------
				var sY = new Date();
				var thisYearS = sY.getFullYear(); 
		//-------------------------------------------------
			if (startMonatRes>endeMonatRes){ // prüfe ob "Jahresüberhang" vorhanden
				var eY = new Date();
				var thisYearE = eY.getFullYear()+1; // bei "Jahresüberhang" + 1 Jahr
			} else {
				var eY = new Date();
				var thisYearE = eY.getFullYear(); // ansonsten das aktuelle Jahr verwenden
				}
				//-------------------------------------------------
				var milliStart = thisYearS+','+startMonatRes+','+startTagRes; // Zeit zusammensetzen
				var ms = new Date(milliStart); 
				var mS = ms.getTime(); // Millisekunden berechnen
				//----------------------
				var milliEnde = thisYearE+','+endeMonatRes+','+endeTagRes; // Zeit zusammensetzen
				var me = new Date(milliEnde); 
				var mE = me.getTime()+86400000; // 
				//----------------------
				var jetzt = new Date(); 
				var jetztMilli = jetzt.getTime(); // aktuelles Datum in Millisekunden
		//-------------------------------------------------
			if (jetztMilli>mS && jetztMilli<mE){ // prüfe ob Datum in Zeitspanne liegt
				// berechne die verbleibenden Tage
				//-----------------------------------------
				var offeneTage = (Math.round(Math.abs(mE-jetztMilli) / (1000 * 60 * 60 * 24 ))); 
				// prüfe Einzahl + Mehrzahl Tage
			if (offeneTage>=2){
				var tag_tage = ' Tage';
			} else {
				var tag_tage = ' Tag';
				}
				var schonInfo = '<span style="font-style:italic;font-weight:normal;font-size:x-small;">noch '+offeneTage+tag_tage+' </span>'; // offene Tage anzeigen
				var bgschon = 'style="background:#500101;"'; // Hintergrund ändern
				var schon = '<span style="color:#ff1414;float:right;position:relative;font-size:50px;">&otimes;</span>'; 
			} else if(starter == "immer") {
				var bgschon = 'style="background:#500101;"'; // Hintergrund ändern
				var schon = '<span style="color:#ff1414;float:right;position:relative;font-size:50px;">&otimes;</span>'; 
			} else {
				//var schonInfo = '';
				var schon = '<span style="color:#008e11;float:right;position:relative;font-size:40px;">#</span>' 
				}
Ich denke das ist alles extrem umständlich und verbesserungswürdig, aber es läuft immerhin in Chrome, Firefox und Opera,
was ich aber nicht verstehe ist, wieso funktioniert es nicht im IE und Safari...?
Habt Ihr vielleicht ein Tipp für mich?

Viele Grüße
Blaubär
 
..so, Fehler gefunden:
IE und Safari haben ein Problem mit den Kommata an folgenden Stelle:
PHP:
var milliStart = thisYearS+','+startMonatRes+','+startTagRes;
var milliEnde = thisYearE+','+endeMonatRes+','+endeTagRes;
Wenn man es so macht läuft es :)
PHP:
var milliStart = thisYearS+'/'+startMonatRes+'/'+startTagRes;
var milliEnde = thisYearE+'/'+endeMonatRes+'/'+endeTagRes;

Gruß, Blaubär
 
Zurück