我正在开发一个连接到firebase实时数据库的android项目。 无论如何,我把timeStamp放在某处。
...
....
map2.put("time", ServerValue.TIMESTAMP);
message_root.updateChildren(map2);
然后我成功地调用了这些数据
...
...
chat_time = (Long)((DataSnapshot)i.next()).getValue();
Calendar calendar = Calendar.getInstance();
int a = calendar.get(Calendar.HOUR_OF_DAY);
int b = calendar.get(Calendar.MINUTE);
int c = calendar.get(Calendar.SECOND);
实施没问题。问题是我无法理解这个值在智能手机和模拟器中是不同的。 对于模拟器中的相同值,它显示(例如)17:16,在智能手机20:16中,当我从firebase控制台查看时,实时数据库中的值相同。 最后,真正的价值是什么?这个值是否根据国家/地区而变化?但我的智能手机和模拟器在同一个国家。我很迷惑。
答案 0 :(得分:1)
根据Firebase Reference Docs,ServerValue.TIMESTAMP
是:
用于自动填充当前时间戳的占位符值(时间 自Firebase数据库以来的Unix纪元,以毫秒为单位 服务器
当我读到你的问题时,我决定在模拟器上试一试。它给了我同样的模拟器和真实设备的价值:我国的当前时间(GMT + 2)。
我也尝试过改变设备的时间。但是,发布到数据库的值仍然是当前时间。 然后,我尝试更改Firebase控制台项目配置中的时区。但价值仍然相同。
如果您说发布的价值相同,但您获得的价值不同,也许您应该告诉我们您是如何显示此值的?