本地时间是设备位置处标准时间的估计值,也称为“挂钟时间”。当地时间以世界协调时间 (UTC) 和时区表示。与其他时间标准相比,本地时间更复杂且故障模式更多,因此作为开发者,您应明确选择单调或 UTC 时间,除非有明确的需求需要本地时间。如需详细了解如何在时间标准之间进行选择,请参阅时间概览;如需详细了解 Fuchsia 的 UTC 实现和行为,请参阅世界协调时间概览。
setui_service
将时区作为国际化设置的组件之一(如需了解详情,请参阅 fuchsia.settings.Intl
)。intl_services
提供了一个更方便的 fuchsia.intl.PropertyProvider
FIDL 接口,您可以使用该接口读取首选时区、读取任何可选的备用时区以及接收时区更改事件。
低级语言运行时(例如 C、C++ 和 Rust)不会直接实现本地时间,因为它需要从使用这些语言编写的所有组件中依赖 fuchsia.intl.PropertyProvider
和 ICU。Fuchsia musl 实现中的 localtime
函数始终返回 UTC 时间。如果您需要从这些语言使用本地时间,则应使用 fuchsia.intl.PropertyProvider.GetProfile
来读取首选时区,使用 ICU 时区数据来确定时区偏移量,然后将此偏移量应用于当前世界协调时间 (UTC)。
与世界协调时间 (UTC) 一样,Fuchsia 设备在收到网络或实时时钟的有效时间之前,无法生成有效的本地时间。时区通常是根据用户输入设置的,因此您应该假定时区随时可能发生变化,并且时区可能不准确(即所报告的时区可能与设备当前位置的合法定义的民用时间不一致)。当地时间可以向前或向后跳转,例如在夏令时转换时。