2016-12-27 3 views
-1

Ich brauche Hilfe bei der Einstellung meines Timeouts für die Funktion. Ich versuche, die Zeitüberschreitung für ein bestimmtes Datum und eine bestimmte Uhrzeit festzulegen, aber meine Konvertierung in Millisekunden funktioniert nicht.Einstellen der Millisekunden bei Timeout basierend auf dem angegebenen Datum

Hier ist mein Code. Bitte helfen Sie.

<script> 
var ref = firebase.database().ref().child("Message"); 
var newRef = ref.child("20161227125916539") 
newRef.on('value',function(snap){ 
    heading.innerText =snap.child("message").val(); 
}); 

ref.on("child_added",function(snap){ 

    var date = snap.child("date").val(); 
    var time = snap.child("time").val(); 
    var type = snap.child("type").val(); 
    var venue = snap.child("venue").val(); 
    var route = snap.child("route").val(); 
    var message = snap.child("message").val(); 

    date = date + time; 
    date = date.getTime(); 
    var now = new Date(); 
    now = now.getTime(); 
    set = date - now; 

    var explode = function(){ 
      alert("Boom!"); 
     }; 
     setTimeout(explode, 2000); 


}); 
</script> 
+0

Was ist der Wert von 'date' und' Time' Das wäre neu geladen, Abstürze, Abschaltungen etc überleben? – philantrovert

+0

Der Wert der Daten ist im Format 2016-12-27 und der Wert der Zeit ist in 15:30 Format –

+0

Datum = neues Datum (Datum); die Zeichenkette muss in ein Datumsobjekt konvertiert werden –

Antwort

0

Sie müssen die date mit new Date() analysieren. Wie Sie sagten, ist der Wert date"2016-12-27" und der Wert time ist "15:30", also während Sie verketten, benötigen Sie auch einen zusätzlichen Platz. Etwas wie:

date = date + " " + time; 
var someDate = new Date(date); 
var now = new Date(); 
var diffInMillis = now - someDate 

var explode = function(){ 
    alert ("Boom!"); 
} 

setTimeout(explode, diffInMillis); 
+0

danke für das richtige Umwandlungsformat :) –

0
dateobj=new Date(datestring); 
timeinmilliseconds=dateobj.getTime(); 
//by the way, may check the browsers console if sth is not working: 
datestring.getTime();// error:undefined function 

Youre die getTime Funktion auf einem String aufrufen. Sie müssen es zuerst in ein Zeitobjekt umwandeln. Beachten Sie das richtige String-Format. Es gibt gute Ressourcen online.

Der bessere Weg:

Ein Timeout getötet wird, wenn der Browser neu geladen wird. Das ist schlecht. Es wäre besser, die Zeit zu speichern und regelmäßig zu überprüfen, ob die Zeit erreicht ist.

function set(timestring){ 
localStorage.setItem("timer",new Date(timestring).getTime());//store timer 
check();//start checking 
} 
function check(){ 
if(var await=localStorage.getItem("timer")){//if timer is set 
    var now=new Date().getTime() 
    if(await<=now){//time reached, or reached in the past 
    alert("Yay, timer finished"); 
    }else{//not reached yet 
    console.log(await-now+" left");//log the time left 
    setTimeout(check,1000);//check again in a scond 
    }} 
    window.onload=check;// browser started, check for an existing timer 

Verwendung wie folgt aus::

set("28-12-2016 12:30"); 
+0

Vielen Dank für den Hinweis das ist wirklich hilfreich –

+0

Wenn Sie es hilfreich fanden, geben Sie eine Upvote;) –

Verwandte Themen