时间概览

Fuchsia 上的组件可以使用四种不同的 时间标准

  • 单调时间:单调时间衡量时间 (不包括在 Suspend-to-Idle 中花费的时间)。 单调时间始终向前推进,并且始终可供所有应用使用,但仅在单个 Fuchsia 设备上的单个电源周期上下文中才有意义。
  • 启动:启动时间是指系统开机以来所用的时间,包括在“挂起到空闲”状态下所用的时间。像单调 启动时间始终向前推进,始终可用,并且仅在 能够在单个紫红色的单个重启环境下有意义 设备。
  • UTC:UTC 时间是系统对世界协调时间的最佳估算值。UTC 通常通过网络获取,因此在某些情况下,系统可能不知道 UTC。使用 UTC 的开发者应特别注意 UTC 行为,以了解 Fuchsia 上 UTC 的独特属性。
  • 本地:本地时间是系统对设备所在位置的标准时间(也称为“挂钟时间”)的最佳估算值。当地时间 基于世界协调时间 (UTC) 和时区,因此继承了 UTC 行为。在某些情况下,系统无法显示当地时间。如果用户发生变化,当地时间将大幅增加 时区。

除了时间系统调用之外,这些时间标准通常可通过支持的语言中的时间函数获取。

作为开发者,您必须选择最合适的时间标准来处理 问题。我们建议您使用单调时间,除非您的程序需要 注意在“挂起到空闲”中花费的时间。如果遇到以下情况,建议将启动时间设置为 时间戳必须与底层硬件或外部服务保持同步, 和单调性是不可或缺的如果时间戳必须满足以下条件,可以使用世界协调时间 (UTC) 与外部服务相关联,不需要单调性。本地时间是世界协调时间的派生,通常仅用于用户体验应用。

例如:

  1. 使用单调时间在重试之间实现 10 秒的延迟。单调时间在所有情况下都适用,因此是简单且最可靠的解决方案。
  2. 使用启动时间为 Fuchsia 中的轨迹点添加时间戳,因为轨迹应显示挂起所花的时间,并且其时间轴不能来回跳转。
  3. 请使用世界协调时间 (UTC) 过期,并在 7 天后删除存储在磁盘上的文件。 在这里,单调时间不允许在电源周期中保留到期时间,而本地时间会将到期时间的正确性与时区设置相关联。
  4. 使用世界协调时间 (UTC) 为将由某些用户读取的设备端事件添加时间戳 服务器。在这种情况下,单调时间不起作用,因为服务器可能不知道 Fuchsia 设备上次开机的时间。使用本地时间需要设备和服务器就时区达成一致,这很容易出错。
  5. 使用当地时间以模拟表盘的形式向用户显示当前时间。当地时间对用户而言是最自然的时间标准,因此没有其他时间 非常实用。

在任何平台上,测试依赖于时间的代码都可能很困难。我们正在开发用于在 Fuchsia 上测试时间依赖项的工具和最佳实践,并会在可用时在此处提供链接。