时间概览

Fuchsia 上的组件可以使用三种不同的时间标准来读取当前时间:

  • 单调时间:单调时间是指自系统开机以来的时间。单调时间总是向前推进,并且始终可用于所有应用,但只有在单个 Fuchsia 设备上的单次重启上下文中才有意义。
  • UTC:UTC 时间是系统对世界协调时间的最佳估计。UTC 通常是通过网络获取的,因此在某些情况下,系统可能不知道 UTC。使用 UTC 的开发者应特别注意 UTC 行为,以了解 Fuchsia 上 UTC 的独特属性。
  • 当地时间:当地时间是系统对设备所在位置的标准时间的最佳估算值,也称为“挂钟时间”。当地时间推导自世界协调时间 (UTC) 和时区,因此继承了大部分世界协调时间 (UTC) 行为。在某些条件下,当地时间不可用。如果用户更改时区,当地时间会大幅上升。

这些时间标准通常可通过受支持语言的时间函数以及时间系统调用获得。

作为开发者,您必须选择最合适的时间标准来解决每个问题。单调时间具有最少的故障模式和最稳定的行为,因此通常应是默认选择,除非存在单调时间不适用的理由。与当地时间相比,UTC 的故障模式较少,行为更稳定,因此除非出于某种原因需要当地时间,否则世界协调时间 (UTC) 应优先于当地时间。

例如:

  1. 使用单调时间在重试之间实现 10 秒的延迟。单调时间将在所有情况下可用,因此提供了最简单、最可靠的解决方案。
  2. 使用世界协调时间 (UTC),使文件在七天后过期,并删除存储在磁盘上的文件。在这种情况下,单调时间不允许在重启后保留过期时间,而当地时间会将过期时间的正确性与时区设置相结合。
  3. 使用 UTC 时间为将要读取的设备端事件设置时间戳。在这种情况下,单调时间将不起作用,因为服务器可能不知道 Fuchsia 设备上次开机的时间。使用当地时间将要求设备和服务器同意时区,而这容易出错。
  4. 使用当地时间,以模拟钟面的形式向用户显示当前时间。当地时间对用户而言是最自然的时间标准,因此此处没有其他时间标准。

在任何平台上测试依赖时间的代码都可能很困难。我们正在开发用于测试 Fuchsia 上时间依赖关系的工具和最佳做法,并将在可行时将其链接到此处。