Javascript Firebase新日期()?

Javascript Firebase新日期()?,javascript,datetime,firebase,Javascript,Datetime,Firebase,我是Firebase的新手,我想知道如何存储JavaScript日期,然后使用Firebase在客户端比较它们 我想做一些类似的事情: var someDate = new Date(); myRootRef.set(someDate); myRootRef.on('value', function(snapshot) { var currDate = new Date(); if (currDate >= snapshot.val()){ //do somethi

我是Firebase的新手,我想知道如何存储JavaScript日期,然后使用Firebase在客户端比较它们

我想做一些类似的事情:

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

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

但是,我从快照中返回一个值
null

您需要设置一个带字符串的Firebase或带值的object,然后在事件中读取相同的值

    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
    }
    });

您还可以使用时间戳

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
    }

});

将日期作为字符串进行比较无法实现正确的日期比较,因此您可能需要使用@ghost建议的时间戳方法。此外,除非两个日期来自同一个客户端,否则您可能需要查阅
.info/serverTimeOffset
,并将其添加到时间戳中:
新日期().getTime()+offset
;否则,对于那些没有在原子时间的一秒钟内保持时钟同步的用户来说,你会感到有些奇怪。感谢回复和代码示例!我真的很感激!