2016-07-26 290 views

回答

18

您可以通過使用ServerValue.TIMESTAMP這是一個Map<String, String>型與{".sv" : "timestamp"}對設置服務器的時間。當它被髮送到firebase數據庫時,它將被轉換爲一個長Unix epoch time像這樣1469554720

所以問題是,你不能直接設置這個鍵。最好的方法是將時間戳放入對象中,並使用DatabaseReference.push()來獲得有保證的唯一密鑰。

例如

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); 
String key = ref.push().getKey(); // this will create a new unique key 
Map<String, Object> value = new HashMap<>(); 
value.put("name", "shesh"); 
value.put("address", "lucknow"); 
value.put("timestamp", ServerValue.TIMESTAMP); 
ref.child(key).setValue(value); 

如果你想將其與格式(DD-MM-YYYY)保存,有一個技巧,但不建議這樣做。您需要先將它(ServerValue.TIMESTAMP)保存到另一個臨時節點,然後檢索時間戳,然後使用Date類將其轉換爲該格式。

+0

非常感謝你..我試了這個,它的工作正常。我也可以這樣做。但是又可以使用這個ServerValue.TIMESTAMP作爲關鍵嗎? –

+0

不客氣。我認爲這是可能的,但會有兩個API調用,首先設置TIMESTAMP值,然後通過使用Query.limitToLast(1);來獲取最後一個鍵,但不建議這樣做,因爲有可能兩個用戶插入了兩個TIMESTAMP在同一時間,所以你不能得到正確的鑰匙。順便說一句,如果你這麼認爲,請將我的答案標記爲已接受。 :) – Wilik

相關問題