【问题标题】:What value is returned when calling Firebase ServerValue.TIMESTAMP调用 Firebase ServerValue.TIMESTAMP 时返回什么值
【发布时间】:2017-06-18 13:46:24
【问题描述】:

我正在开发一个连接到 firebase 实时数据库的 android 项目。 无论如何,我把时间戳放在某个地方。

...
.... 
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 控制台查看时,实时数据库中的值相同。 最后,什么是真正的价值?这个值会因国家而异吗?但是我的智能手机和模拟器在同一个国家。我很迷惑。

【问题讨论】:

  • 我注意到我的模拟器时间显示在 3 小时前。然后一切看起来都很好,但这是怎么回事?最终,它将一个值存储在数据库中

标签: android firebase firebase-realtime-database timestamp


【解决方案1】:

根据Firebase Reference DocsServerValue.TIMESTAMP 是:

用于自动填充当前时间戳的占位符值(时间 自 Unix 纪元以来,以毫秒为单位)由 Firebase 数据库 服务器。

当我阅读您的问题时,我决定在模拟器上尝试一下。它给了我相同的值,无论是模拟器还是真实设备:我所在国家的当前时间 (GMT+2)。

我还尝试更改设备的时间。但是,发布到数据库的值仍然是当前时间。 然后我尝试在 Firebase 控制台项目配置中更改时区。但是值还是一样的。

如果你说发布的值是相同的,但你得到的值不同,也许你应该告诉我们你是如何显示这个值的?

【讨论】:

  • 嗯,我解决了我的问题。事实上,它显示了真实时间,因为我的模拟器时钟比我的真实设备早了 3 小时。然后没问题,它根据设备时间显示。不错,我喜欢。
猜你喜欢
  • 2018-09-17
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 2021-12-06
相关资源
最近更新 更多