2013-05-05 50 views
13

我是Firebase的新手,我想知道如何存儲JavaScript日期並使用Firebase稍後在客戶端比較它們?Firebase new Date()?

我想要做的事,如:

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

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

不過,我回來的null從該快照中值?

回答

17

您也可以使用時間戳。

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

此外,除非兩個日期來自同一客戶端,否則您可能需要諮詢'.info/serverTimeOffset'並將其添加到timestamp:'new Date()。getTime()+ offset';否則你會得到一些怪異的用戶誰不保持他們的時鐘在原子時間的一秒鐘內同步 – Kato 2013-05-05 18:26:05

+0

感謝您的答覆和代碼示例!對此,我真的非常感激! – TriFu 2013-05-05 23:45:03

-3

您需要使用字符串或具有值的對象設置Firebase,並且在事件中讀取相同的值。

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

將日期比較爲字符串將無法實現正確的日期比較,因此您可能需要使用@ghost推薦的時間戳方法。 – 2013-05-05 15:47:59

相關問題