2016-07-26 102 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

相关问题