通过控制面板向Firebase实时数据库添加新值时,我想在特定字段中保存当前日期/时间。
我该如何实现?
最佳做法是TIMESTAMP像这样保存数据ServerValue.TIMESTAMP。
ServerValue.TIMESTAMP
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(); Map map = new HashMap(); map.put("timestamp", ServerValue.TIMESTAMP); ref.child("yourNode").updateChildren(map);
还要记住,将设置为时,将其TIMESTAMP设置为Map,但是将其获取时,则将其设置为Long。为了获取数据,我建议您使用以下方法:
TIMESTAMP
Map
public static String getTimeDate(long timestamp){ try{ DateFormat dateFormat = getDateTimeInstance(); Date netDate = (new Date(timestamp)); return dateFormat.format(netDate); } catch(Exception e) { return "date"; } }
编辑:模型类应如下所示:
public class YourModelClass { //private fields private Map<String, String> timestamp; public YourModelClass() {} //public setters and getters for the fields public void setTimestamp(Map<String, String> timeStamp) {this.timestamp= timestamp;} public Map<String, String> getTimestamp() {return timestamp;} }
请记住,ServerValue.TIMESTAMPFirebase Realtime Database只是一个令牌,当它在写入操作期间用作子值时,它将转换为服务器端的数字。该日期仅在写入操作完成后才出现在数据库中。
ServerValue.TIMESTAMPFirebase Realtime Database
要获取timestamp,还有另一种方法,那就是在Cloud Functions for Firebase中编写一个fronction,它很简单:
timestamp
Cloud Functions for Firebase
fronction
exports.currentTime = functions.https.onRequest((req, res) => { res.send({"timestamp":new Date().getTime()}) })
您可以将其托管在Cloud Function中,无需用户干预即可获取服务器时间戳。