2013-05-05 3 views
13

Ich bin neu in Firebase und ich frage mich, wie ich ein JavaScript-Datum speichern und Firebase verwenden kann, um sie später auf der Clientseite zu vergleichen?Firebase neues Datum()?

Ich mag wie etwas tun:

var someDate = new Date(); 
myRootRef.set(someDate); 

myRootRef.on('value', function(snapshot) { 
    var currDate = new Date(); 
if (currDate >= snapshot.val()){ 
    //do something 
} 

Allerdings bekomme ich einen Wert von null aus dem Snapshot zurück?

Antwort

17

Sie können auch Zeitstempel verwenden.

var timestamp = new Date().getTime(); 
myRootRef.set(timestamp); 

myRootRef.on('value', function(snapshot) { 
    var currDate = new Date(); 
    var snapshotTimestamp = snapshot.val(); 

    //you can operate on timestamps only... 
    console.log("Snapshot timestamp: " + snapshotTimestamp); 

    if(currDate.getTime() >= snapshotTimestamp) { 
     //do something 
    } 

    //...or easily create date object with it 
    console.log("Snapshot full date: " + new Date(snapshotTimestamp)); 

    if (currDate >= new Date(snapshotTimestamp)){ 
     //do something 
    } 

}); 
+3

Außerdem, wenn beide Daten nicht vom selben Client stammen, sollten Sie '.info/serverTimeOffset' konsultieren und dem Zeitstempel hinzufügen:' new Date(). GetTime() + offset'; sonst wirst du etwas seltsam für Benutzer bekommen, die ihre Uhr innerhalb einer Sekunde Atomzeit nicht synchron halten – Kato

+0

danke für die Antworten und Codebeispiele! Ich schätze das wirklich! – TriFu

-3

Sie müssen einen Firebase mit Zeichenfolge oder Objekt mit Wert festlegen und dann den gleichen Wert im Ereignis lesen.

var someDate = new Date(); 
    myRootRef.set({Date: someDate.toString()}); 

    myRootRef.on('value', function(snapshot) { 
    var msg = snapshot.val(); 
    var currDate = new Date(); 
    if (currDate >= msg.Date){ 
    //do something 
    } 
    }); 
+0

Durch das Vergleichen von Datumsangaben als Zeichenfolgen wird kein korrekter Datumsvergleich erzielt. Daher möchten Sie wahrscheinlich den von @ghost empfohlenen timestamp-Ansatz verwenden. –

Verwandte Themen