當地時間是指裝置所在位置的標準時間 (又稱「牆壁時間」)。當地時間是根據世界標準時間 (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 時區資料來判斷時區偏移,然後將這個偏移套用至目前的世界標準時間。
和世界標準時間一樣,Fuchsia 裝置必須從網路或即時時鐘收到有效時間,才能產生有效的當地時間。時區通常是根據使用者輸入內容而設,因此您應該假設時區隨時可能變動,而且時區可能會有不正確的情況 (亦即回報的時區可能與裝置目前所在位置的法定定義民事時間不相符)。當地時間可能會向前或向後跳,例如在日光節約時間轉換時。