FF machts richtig

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • FF machts richtig

    Hallo, ich habe so eben ein kleines Skript geschrieben welches zum einen die Zeit zwischen Zeit Zeitpunkten ermittelt und zum andern den Endzeitpunkt verschiebt wenn man die Dauer ändert.

    Code:
    function set_duration()
       {   
    	start = new Date(document.taskform.start_month.value+" "+ 
                                      document.taskform.start_day.value+", "+
                                      document.taskform.start_year.value+" "+
                                     document.taskform.start_time.value);
    	start = start.getTime()/60000; //min
    	finished = new Date(document.taskform.finished_month.value+" "+
                                            document.taskform.finished_day.value+", "+
                                            document.taskform.finished_year.value+" "+
                                            document.taskform.finished_time.value);
    	finished = finished.getTime()/60000; //min
    	duration = finished - start; 
    	 
            //Dauer in Tage, Stunden, Minuten aufschlüssen  	  
    	document.taskform.duration_day.value = duration / (24*60);
    	document.taskform.duration_hour.value = duration % (24*60) / 60;
    	document.taskform.duration_min.value = duration % 60;   
       }
    Code:
     //reminder Felder ändern	   
    	start = new Date(document.taskform.start_month.value+" "+
                                       document.taskform.start_day.value+", "+
                                       document.taskform.start_year.value+" "+
                                       document.taskform.start_time.value);
    	start = start.getTime(); //Millisec
    	finished = new Date(document.taskform.finished_month.value+" "+
                                           document.taskform.finished_day.value+", "+
                                           document.taskform.finished_year.value+" "+
                                           document.taskform.finished_time.value);
    	finished = finished.getTime(); //Millisec
    	duration_diff = finished - start;
            //Die Felder Tag, Stunde, Minute addieren und in Millisec Umrechnen
    	duration_formular = 1000*(60*60*24*document.taskform.duration_day.value
                                            + 60*60*document.taskform.duration_hour.value 
                                            + 60*document.taskform.duration_min.value);  
    	   	  
    	if(document.taskform.planning_type[1].checked == true)
    	{ 
    	  	finished = new Date((start + duration_formular));
    	   	year = finished.getYear();
    	   	if (year < 999)
      		year += 1900;
    	   	document.taskform.finished_year.value = year;
                    //seltsamerweis weißt javascript scheinbar Januar den Monat 0 zu
    	   	document.taskform.finished_month.value = finished.getMonth()+1; 
    	   	document.taskform.finished_day.value = finished.getDate();	   	   	
    	   	document.taskform.finished_time.value = finished.getHours()+":"+finished.getMinutes()
    	   	  }
    Das ganze funktioniert im FF auch wunderbar, aber leider nicht im IE. Dieser Zeigt in den Textfelder immer nur "NaN" an. Nun hab ich das ganze im Opera probiert und musste fest stellen das dieser mir, wenn ich als Dauer 0 Tag, 0 Stunden und 0 Minuten eingebe nicht den Richtigen Endzeitpunkt (in dem Fall müsste Start- und Endzeitpunkt ja gleich sein) angibt, aber den falschen Zeitpunkt um die richtigen Werte erhöht, wenn ich nun wieder eine Länger Dauer eingebe (hoffe das war jetzt verständlich).

    Weiß irgend wer warum der IE überhaupt nicht will und warum Opera wenn die eingegeben Dauer 0 ist nicht End- gleich Startzeitpunkt setzt?

    Schon mal vielen Danke für eure Mühen!
    Zuletzt geändert von Mr.Programe; 10.10.2006, 08:12.
    Wissen ist Macht
    Power is nothing without control

  • #2
    Re: FF machts richtig

    Regeln lesen, Code umbrechen, vor nächster Antwort, sonst *trash*
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      sorry hatte ausversehen abgeschickt, bevor es richtig Editiert war. (verdammt bist du schnell was das öffnen von Beiträgen angeht)
      Wissen ist Macht
      Power is nothing without control

      Kommentar


      • #4
        Re: FF machts richtig

        Was kommt denn bei der Berechnung von duration_formular raus?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ich hab die Kommentierung noch mal überarbeitet. duration_formular gibt die vom Nutzer oder von der ersten Funktion ermittelte Zeit zwischen start und finished in Millisekunden an (die Werte hab ich auch schon mit hilfe von alert überprüft, sie stimmmen).
          Ich hab nun aber auch mal die andern Werte kontroliert und fest gestellt das start (Timstamp in Millisekunden) im
          FF 1158312600000 (15.09.2006 11:30 der Wert der wirklich im Formular steht)
          Opera 1160405340000 (09.10.2006 16:49 keine Ahung wie Opera darauf kommt)
          IE NAN
          ist.
          Wissen ist Macht
          Power is nothing without control

          Kommentar


          • #6
            Vielleicht noch erwähnenswert, wenn start und finish gleich sind, ermittelt Opera in set_duration() (der ersten Funktion) korret eine Zeit von 0 Tagen, 0 Stunden und 0 Minuten, wenn start = finished ist, ändere ich die Zeit um einer Stunde wird mir aber schon eine Dauer von
            -0.0006944444444444445 Tage -0.016666666666666666 Stunden -1 Minuten angezeigt. Die Berechnungen von
            start ergibt 19340089 und
            von end 19340088
            (hier wird in Minuten gerechnent, also eigentlich ne abweichung von 1 Minut statt ener Stunde)
            Wissen ist Macht
            Power is nothing without control

            Kommentar


            • #7
              hmm, ich hab nun mal etwas rum experimentiert und fest gestellt egal ob ich start nach dem Schema
              Code:
              Objektname = new Date("Monat Tag, Jahr Stunden:Minuten:Sekunden");
              oder
              Code:
              Objektname = new Date(Jahr, Monat, Tag, Stunden, Minuten, Sekunden);
              definierte der Internet Explore erkennt das Datum nicht. Nur bei der Nutzung von
              Code:
              Objektname = new Date(Millisekunden);
              erkennt er es als Datum (http://de.selfhtml.org/javascript/objekte/date.htm). Da die Funktionen aber direkt auf die Eingabe des Nutzer reagieren sollen, kann ich nicht PHP bemühen um die Anzahl von Millisekunden zu ermitteln. Der andere weg über die Obengenannten konstrukte funktioniert auch nicht. Fehlen die benötigten Konstruktoren in IE oder was mach ich falsch???
              Wissen ist Macht
              Power is nothing without control

              Kommentar


              • #8
                Code:
                Objektname = new Date("Monat Tag, Jahr Stunden:Minuten:Sekunden");
                Objektname = new Date(Jahr, Monat, Tag, Stunden, Minuten, Sekunden);
                Also bei mir "funzen" diese beiden Möglichkeiten im IE (6) gut.

                Hast du die Hinweise bei SELFHTML beachtet, in welcher Form die Parameter jeweils zu übergeben sind?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Code:
                  start = new Date("2006, 10, 5, 12, 30, 00");
                  start = start.getTime()/60000; //min
                  alert(start);
                  Alert gibt NAN aus.

                  Code:
                  start = new Date("10 5, 2006 12:30:00");
                  Alert gibt NAN aus.

                  D.h. natürlich wieder nur im IE (Version 6.0.2900.2180), FF gibt einen Zahl aus.
                  Zuletzt geändert von Mr.Programe; 11.10.2006, 16:40.
                  Wissen ist Macht
                  Power is nothing without control

                  Kommentar


                  • #10
                    Tipp: Gib mal nach

                    start = new Date("2006, 10, 5, 12, 30, 00");

                    alert(start); aus. Er sagt dir dann ganz genau, was nicht stimmt.


                    Dann kommt mein zweiter Tipp: Versuche es mal ohne die " ", also

                    Code:
                    start = new Date(2006, 10, 5, 12, 30, 00);
                    Grüße
                    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                    var_dump(), print_r(), debug_backtrace und echo.
                    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                    Kommentar


                    • #11
                      Original geschrieben von wahsaga
                      Hast du die Hinweise bei SELFHTML beachtet, in welcher Form die Parameter jeweils zu übergeben sind?
                      Wofür frag' ich dich das eigentlich wohl ...?
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Ok, ich hab es jetzt mit diesem Konstruktor zum laufen bekommen

                        [/CODE]
                        Code:
                        Objektname = new Date(Jahr, Monat, Tag, Stunden, Minuten, Sekunden);
                        Nun erkennt er in FF, IE und Opera die Daten. IE und Opera haben bei der Berechnung der Tage und Stunden die Kommerzahl zurück gegeben daher musste ich noch Math.floor einbauen (FF macht es auch ohne).

                        Nochmal vielen Dank für eure Hilfe

                        Code:
                        function set_duration()
                        {
                          if(document.taskform.planning_type[1].checked == true)
                          {
                                start_time = document.taskform.start_time.value;
                        	finished_time = document.taskform.finished_time.value;
                        	start_month = document.taskform.start_month.value-1;
                        	finished_month = document.taskform.finished_month.value-1;
                        	start_day = document.taskform.start_day.value;
                        	finished_day = document.taskform.finished_day.value;
                        	start_year = document.taskform.start_year.value;
                        	finished_year = document.taskform.finished_year.value;
                        	start_min = document.taskform.start_time.value.substring(0,2);
                        	start_hour = document.taskform.start_time.value.substring(3,5);
                        	finished_min = document.taskform.finished_time.value.substring(0,2);
                        	finished_hour = document.taskform.finished_time.value.substring(3,5);
                        	 		  
                        	start = new Date(start_year, start_month, start_day, start_min, start_hour, 00);
                        	start = start.getTime()/60000; //min
                        		
                        	finished = 
                                   new Date(finished_year, finished_month, finished_day, finished_min, finished_hour, 00); 
                        	finished = finished.getTime()/60000; //min
                        
                        	duration = finished - start; 		   
                        	document.taskform.duration_day.value = Math.floor(duration / (24*60));
                        	document.taskform.duration_hour.value = Math.floor(duration % (24*60) / 60);
                        	document.taskform.duration_min.value =  duration % 60;   
                          }
                        }
                        Zuletzt geändert von Mr.Programe; 18.10.2006, 10:38.
                        Wissen ist Macht
                        Power is nothing without control

                        Kommentar

                        Lädt...
                        X