2013-05-05 3 views
13

저는 Firebase을 처음 접했고 어떻게 JavaScript 날짜를 저장하고 나중에 Firebase를 사용하여 클라이언트 측에서 비교할 수 있는지 궁금합니다.Firebase 새 날짜()?

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'를 참조하여 타임 스탬프에 추가하고 싶을 것입니다 :'new Date(). getTime() + offset'; 그렇지 않으면 시계를 원자 시간의 두 번째 시간 내에 동기화하지 않는 사용자에게 이상하게 느껴질 것입니다. – Kato

+0

답장과 코드 샘플을 보내 주셔서 감사합니다! 정말 감사! – TriFu

-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에서 권장하는 타임 스탬프 방식을 사용하는 것이 좋습니다. –

관련 문제