Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 17
  1. #1
    Max Matti ist offline Foren As
    registriert
    01-04-2011
    Beiträge
    75

    Wochentag-Rechner

    Hi,

    Möchte folgendes JS-Script in verschiedenen Browsern getestet haben:

    HTML-Code:
    <!--
            Wochentag.html
            
            Copyright 2011 Max Staff <max.staff@gmx.de>
            
            This program is free software; you can redistribute it and/or modify
            it under the terms of the GNU General Public License as published by
            the Free Software Foundation; either version 2 of the License, or
            (at your option) any later version.
            
            This program is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
            GNU General Public License for more details.
            
            You should have received a copy of the GNU General Public License
            along with this program; if not, write to the Free Software
            Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
            MA 02110-1301, USA.
    -->
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    
    <head>
    	<title>Wochentag-Rechner</title>
    	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
    	<meta name="generator" content="Geany 0.18" />
    </head>
    
    <body>
    	<p>Bitte gib ein Datum ein:
    		<input type="text" value="" id="d" width="2" />.
    		<input type="text" value="" id="m" width="2" />.
    		<input type="text" value="" id="y" width="4" />
    	</p>
    	<input type="button" value="Wochentag ermitteln!" onclick="getDay();" />
    	<script type="text/javascript">
    		function getDay() {
    			var d = document.getElementById("d").value;
    			var m = document.getElementById("m").value;
    			var y = document.getElementById("y").value;
    			var datum = new Date();
    			datum.setTime(0);
    			datum.setYear(y);
    			datum.setMonth(m);
    			datum.setDate(d);
    			var wtag = "";
    			switch (datum.getDay()) {
    				case 0:
    					wtag = "Donnerstag.";
    					break;
    				case 1:
    					wtag = "Freitag.";
    					break;
    				case 2:
    					wtag = "Samstag.";
    					break;
    				case 3:
    					wtag = "Sonntag.";
    					break;
    				case 4:
    					wtag = "Montag.";
    					break;
    				case 5:
    					wtag = "Dienstag.";
    					break;
    				case 6:
    					wtag = "Mittwoch.";
    					break;
    			}
    			var tag = datum.getDate();
    			var monat = datum.getMonth();
    			if (datum.getDate() < 10) {
    				tag = "0" + datum.getDate();
    			}
    			if (datum.getMonth() == 0) {
    				monat = "12";
    			} else if (datum.getMonth() < 10) {
    				monat = "0" + datum.getMonth();
    			}
    			var gtag = 0;
    			var tage = new Array();
    			tage[0] = 31;
    			tage[1] = 28;
    			tage[2] = 31;
    			tage[3] = 30;
    			tage[4] = 31;
    			tage[5] = 30;
    			tage[6] = 31;
    			tage[7] = 31;
    			tage[8] = 30;
    			tage[9] = 31;
    			tage[10] = 30;
    			tage[11] = 31;
    			for (var i = 0; i < parseInt(monat)-1; i++) {
    				gtag += tage[i];
    			}
    			gtag += datum.getDate();
    			if ((datum.getYear() % 4 == 0 && (datum.getYear() % 100 != 0 || datum.getYear() % 400 == 100)) && parseInt(monat) > 2) {
    				gtag++;
    			}
    			alert("Der " + tag + "." + monat + "." + (datum.getYear()+1900) + " war ein " + wtag + "\nAusserdem war es der " + gtag + ". Tag im Jahr " + (datum.getYear()+1900) + ".");
    		}
    	</script>
    </body>
    </html>
    Weiss nicht, wie das hier so abläuft...

    Einfach eine HTML-Datei anlegen (z.b. "Wochentag.html") , mit einem Texteditor öffnen, Text hineinkopieren, speichern, mit Browser öffnen.

    Ich habs unter Ubuntu 11.04 Natty Narwhal mit Firefox 7.0b getestet und es funktioniert so, wie es soll.

    Erklären kann ich es auch gern, aber nur auf Anfrage (Edit: Bin zu faul, nen Aufsatz zu schreiben, den Nachher eh keiner liest). Die Kommentare im Script hab ich rausgenommen, um es kürzer zu machen.

    lg
    Max
    Geändert von Max Matti (08-09-2011 um 20:11 Uhr) Grund: s.o.

  2. #2
    rico2009 Guest

    AW: Wochentag-Rechner

    Hi,

    klappt auch unter Win XP, mit FF 6.0.2.

    Sowas kannste aber eig. auch selber testen. Einfach eine virtuelle Maschine installieren und dort dann die verschiedenen Browser installieren. (IE7-9, FF, Opera, Chrome, Safari)

    Gruß

  3. #3
    Avatar von jspit
    jspit ist offline Lounge-Member
    registriert
    19-06-2009
    Beiträge
    1.711

    AW: Wochentag-Rechner

    Liefert bei mir falsche Werte, danach der 8.9.2011 ein Mittwoch und der 8.Tag im Jahr 2011.

  4. #4
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.702

    AW: Wochentag-Rechner

    Da ist einiges falsch: getDay() liefert bei Sonntag 0 ... Samstag 6 und getMonth liefert bei Januar 0 ... Dezember 11
    Außerdem werden die Schaltjahre falsch berechnet, da du dich auf getYear und nicht getFullYear verlässt.
    Ansonsten verstehe ich den Sinn des Skriptes nicht so ganz - wo doch jeder moderne Rechner einen internen Kalender hat, der auch meistens nicht besonders schwer zu erreichen ist.

    @jspit: du bekommst Mittwoch, weil der 8.10.2011 ein Samstag ist
    EDIT: und weil parseInt ohne Basis verwendet wird, bekommst du den 8. Tag.
    EDIT2: Das Ganze auch noch mit einem copyright zu versehen, finde ich etwas ironisch...
    Geändert von kkapsner (09-09-2011 um 20:32 Uhr)

  5. #5
    Avatar von jspit
    jspit ist offline Lounge-Member
    registriert
    19-06-2009
    Beiträge
    1.711

    AW: Wochentag-Rechner

    ... und für setMonth beginnt die Zählung auch bei 0, so daß schon vor dem switch von Anfang an mit einem falschen Datum operiert wird.

  6. #6
    Max Matti ist offline Foren As
    registriert
    01-04-2011
    Beiträge
    75

    AW: Wochentag-Rechner

    @kkapsner: Der erste Kommentar kommt automatisch in meinem Editor, wenn ich eine neue Datei anlege.
    getYear gibt bei 0 bei 1900 zurück und alle andern Zahlen werden dementsprechend angepasst. Wenn du dir meine Schaltjahr-Funktion mal genauer ansiehst, siehst du, dass ich sie dementsprechend angepasst habe (die einzige Änderung ist in der letzten Bedingung der if-Abfrage, da wird überprüft, ob das Jahr % 400 100 ergibt).
    Bei den Funktionen getDay und getMonth habe ich mich wohl falsch informiert, bei den Daten, die ich eingegeben habe, hat es allerdings funktioniert.
    @rico: Hab zwar ne Virtuelle Maschine, die läuft aber nur sehr langsam, da mein pc nicht gerade der beste ist und ich hab da auch nur WinXP

    den rest beantworte ich später, wenn ich mehr Zeit habe...

  7. #7
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.702

    AW: Wochentag-Rechner

    OK - das mit dem "== 100" hab' ich übersehen... ABER nicht alle Browser verwenden bei getYear die Jahresreferenz 1900. Verwende einfach getFullYear - das reagiert in allen Browsern gleich und liefert auch noch ein sinnvolles Ergebnis (111 für 2011 ist einfach dämlich - Y2K ist doch wirklich lang genug her)
    Wo bitte hast du dich denn informiert, dass da so ein Schrot steht? Ist hald toll, wenn das Skript nur für den August 2011 (OK - wahrscheinlich auch noch für ein paar andere Monate) funktioniert...
    ... und die Jahrestagszählung nur von Januar bis Juli und Oktober bis Dezember funktioniert. (Warum du da mit einem String und parseInt arbeitest erschließt sich mir auch nicht so wirklich.)

  8. #8
    Max Matti ist offline Foren As
    registriert
    01-04-2011
    Beiträge
    75

    AW: Wochentag-Rechner

    Also ich hatte keine Lust mich bei der Jahrestagrechnung mit dem 0er im Dezember rumzuschlagen und hab daher einfahc die Werte aus der Variable genommen, wo es schon richtig drin steht. Das fällt aber jetzt raus, weil ich eh alles um 1 verschiebe.
    Ich glaube es ist schlauer, wenn ich mich erstmal um die Verschiebung kümmere und ihr dann die neue Version kritisiert, vlt fällt mir dann auch noch was anderes auf.
    Ich hatte nur für meinen Geburtstag getestet, da ich da den Wochentag weiss (und für 1 anderen Tag, den ich aber nicht überprüfen konnte), daher sind mir die Fehler nicht aufgefallen. Und die Quelle (hab meine Chronik durchforstet) hat mittlerweile geschlossen, d.h. der Server existiert nicht mehr.

  9. #9
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.702

    AW: Wochentag-Rechner

    Diese Quelle existiert zu Recht nicht mehr.

    Aber überarbeite das Ganze noch mal - uns fällt dann sicherlich was zum kritisieren auf

  10. #10
    Max Matti ist offline Foren As
    registriert
    01-04-2011
    Beiträge
    75

    AW: Wochentag-Rechner

    HTML-Code:
    <!--
            Wochentag.html
            
            Copyright 2011 Max Staff <max.staff@gmx.de>
            
            This program is free software; you can redistribute it and/or modify
            it under the terms of the GNU General Public License as published by
            the Free Software Foundation; either version 2 of the License, or
            (at your option) any later version.
            
            This program is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
            GNU General Public License for more details.
            
            You should have received a copy of the GNU General Public License
            along with this program; if not, write to the Free Software
            Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
            MA 02110-1301, USA.
    -->
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    
    <head>
    	<title>Wochentag-Rechner</title>
    	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
    	<meta name="generator" content="Geany 0.18" />
    </head>
    
    <body>
    	<p>Bitte gib ein Datum ein:
    		<input type="text" value="" id="d" width="2" />.
    		<input type="text" value="" id="m" width="2" />.
    		<input type="text" value="" id="y" width="4" />
    	</p>
    	<input type="button" value="Wochentag ermitteln!" onclick="getDay();" />
    	<script type="text/javascript">
    		<!--
    		var check;
    		function getDay() {
    			if (check) {
    				document.getElementsByTagName("body")[0].removeChild(check);
    				check = null;
    			}
    			var d = document.getElementById("d").value;
    			var m = document.getElementById("m").value - 1;
    			var y = document.getElementById("y").value;
    			if (y < 100) {
    				check = document.createElement("div");
    				check.innerHTML = "Welches Jahr meinten sie? <br \/>";
    				check.innerHTML += "<input type='button' id='jahr' value='19" + y + "' onclick='document.getElementById(\"y\").value = 19 + document.getElementById(\"y\").value;getDay();' \/><br \/>"
    				check.innerHTML += "<input type='button' id='jahr' value='20" + y + "' onclick='document.getElementById(\"y\").value = 20 + document.getElementById(\"y\").value;getDay();' \/><br \/>"
    				check.innerHTML += "<input type='button' id='jahr' value='anderes Jahr.' onclick='document.getElementById(\"y\").value = prompt(\"Bitte geben sie die vollständige Jahreszahl ein!\");getDay();' \/><br \/>"
    				document.getElementsByTagName("body")[0].appendChild(check);
    				return;
    			}
    			var datum = new Date();
    			datum.setTime(0);
    			datum.setFullYear(y);
    			datum.setMonth(m);
    			datum.setDate(d);
    			var wtag = "";
    			switch (datum.getDay()) {
    				case 0:
    					wtag = "Sonntag.";
    					break;
    				case 1:
    					wtag = "Montag.";
    					break;
    				case 2:
    					wtag = "Dienstag.";
    					break;
    				case 3:
    					wtag = "Mittwoch.";
    					break;
    				case 4:
    					wtag = "Donnerstag.";
    					break;
    				case 5:
    					wtag = "Freitag.";
    					break;
    				case 6:
    					wtag = "Samstag.";
    					break;
    			}
    			var tag = datum.getDate();
    			var monat = datum.getMonth() + 1;
    			if (datum.getDate() < 10) {
    				tag = "0" + datum.getDate();
    			}
    			if (datum.getMonth() < 9) {
    				monat = "0" + (datum.getMonth() + 1);
    			}
    			var gtag = 0;
    			var tage = new Array();
    			tage[0] = 31;
    			tage[1] = 28;
    			tage[2] = 31;
    			tage[3] = 30;
    			tage[4] = 31;
    			tage[5] = 30;
    			tage[6] = 31;
    			tage[7] = 31;
    			tage[8] = 30;
    			tage[9] = 31;
    			tage[10] = 30;
    			tage[11] = 31;
    			for (var i = 0; i < datum.getMonth(); i++) {
    				gtag += tage[i];
    			}
    			gtag += datum.getDate() + 1;
    			if ((datum.getFullYear() % 4 == 0 && (datum.getFullYear() % 100 != 0 || datum.getFullYear() % 400 == 0)) && parseInt(monat) > 2) {
    				gtag++;
    			}
    			if (datum.getFullYear() > 3000) {
    				alert("Der " + tag + "." + monat + "." + datum.getFullYear() + " wird ein " + wtag + "\nAusserdem wird es der " + gtag + ". Tag im Jahr " + datum.getFullYear() + " sein, falls bis dahin mit dem Gregorianischen Kalender weitergerechnet wird.");
    			} else if (datum.getTime() > new Date().getTime()) {
    				alert("Der " + tag + "." + monat + "." + datum.getFullYear() + " wird ein " + wtag + "\nAusserdem wird es der " + gtag + ". Tag im Jahr " + datum.getFullYear() + " sein.");
    			} else {
    				alert("Der " + tag + "." + monat + "." + datum.getFullYear() + " war ein " + wtag + "\nAusserdem war es der " + gtag + ". Tag im Jahr " + datum.getFullYear() + ".");
    			}
    		}
    		//-->
    	</script>
    </body>
    </html>
    Das ist die überarbeitete Version.
    Angepasst:
    Tag korrekt in Datumsfunktion eingegeben,
    Jahreszahl korrekt eingeben hinzugefügt, aber noch nicht überprüft,
    switch für die Wochentage angepasst,
    Tag korrekt aus Datum herausgeholt,
    if für die Monate angepasst,
    Schaltjahrfunktion an getFullYear() angepasst.
    alert an getFullYear() angepasst,
    alert an Zeit angepasst.
    Geändert von Max Matti (10-09-2011 um 15:43 Uhr) Grund: Fehler bei Prompt in Zeile 55 gefunden und verbessert

  11. #11
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.702

    AW: Wochentag-Rechner

    Nett, dass der 1. Januar der zweite Tag im Jahr ist...

  12. #12
    Max Matti ist offline Foren As
    registriert
    01-04-2011
    Beiträge
    75

    AW: Wochentag-Rechner

    Also bei mir ist es der erste...
    Aber mir fällt gerade auf, dass beim übertragen eine Zeile nicht mitgekommen ist: direkt vor den alerts am schluss hab ich in meinem lokalen code noch ein "gtag--;" zu stehen, was das ausgleicht.

  13. #13
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.702

    AW: Wochentag-Rechner

    ... was aber nicht nötig wäre, wenn du nicht bei getDate eins dazuzählen würdest...

    Was mich auch noch stört ist, dass du nicht überprüfst, ob auch ein valides Datum eingegeben wurde (probier' doch einfach mal aus, was passiert, wenn du 30.2.2011 eingibst).

  14. #14
    Max Matti ist offline Foren As
    registriert
    01-04-2011
    Beiträge
    75

    AW: Wochentag-Rechner

    gibt es da eine eingebaute Funktion, oder muss ich mir da selber was basteln?

  15. #15
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.702

    AW: Wochentag-Rechner

    Nö - das musst du per Hand machen (also erst mal auf Zahlen allgemein prüfen - dann kannst du das ganze in ein Date-Objekt reintun und dann überprüfen, ob die entwprechenden get...-Funktionen auch das Gewünschte zurückliefern).

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Wochentag Datum Uhrzeit
    Von jsworldwide im Forum JavaScript
    Antworten: 15
    Letzter Beitrag: 16-02-2011, 09:58
  2. Wochentag zwischen 2 Daten
    Von WeisserWolf im Forum Serverseitige Programmierung
    Antworten: 12
    Letzter Beitrag: 09-03-2008, 18:05
  3. Wochentag aus Datum
    Von Michael Roth im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 10-02-2003, 21:52
  4. Wochentag aus Datum
    Von Michael Roth im Forum Serverseitige Programmierung
    Antworten: 6
    Letzter Beitrag: 09-02-2003, 02:42
  5. css nach wochentag?
    Von zecke im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 03-11-2000, 12:04

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •