choose 列舉

與 搭配 time_zone 使用 , zoned_time 以指出如何處理模棱兩可或不存在 local_timesys_time 轉換。

語法

enum class choose { // C++20
    earliest,
    latest
};

成員

元素 描述
earliest 如果時間轉換模棱兩可,請使用較早的時間點。
latest 如果時間轉換模棱兩可,請使用稍後的時間點。

備註

如果轉換的結果為 nonexistent_local_time,則和中的earliestlatest時間相同。

模棱兩可的轉換錯誤

從日光節約時間轉換到秋季的標準時間期間,時鐘基本上會增加一小時。 這可能會造成混淆,因為轉換到標準時間是否意味著失去一小時? 藉由倒退一小時,轉換前的小時會在時鐘調整標準時間之後重複。 請考慮紐約標準時間的變更,該時間發生在11月的第一個星期天上午2:00。 首先,上午 1:00 會過去。 淩晨 2 點,時鐘會轉換為標準時間,所以現在又是上午 1:00。 這表示上午 1 點到 2 點之間的時間將會「重複」,有效地增加了一個小時。

local_time如果 指定此「額外」小時內的時間,則不清楚如何轉換。 轉換的時間應該視為該小時發生的「第一次」時間,還是「第二次」? 如果未指定列舉 choose 來指出它應該是哪一個 ambiguous_local_time ,您將會收到例外狀況。

不存在的轉換錯誤

從標準時間轉換成日光節約時間時,可能會發生不同的問題。 在從標準時間到春季日光節約時間的轉換期間,時鐘會向前移動一小時。 略過的時間會消失,因此即使似乎我們已將一小時新增至時間,方法是「向前跳動」一小時,轉換后的小時會有效移除。

請考慮紐約日光節約時間的變更,該時間發生在3月的第二個星期天淩晨2點。 上午 2 點,時鐘會轉換為日光節約時間,現在上午 3:00 讀取。 例如,如果轉換的 local_time 是上午 2:30,則該時間是在「移除」期間,因此「不存在」,導致 nonexistent_local_time 例外狀況。

需求

標頭: <chrono> (自C++20起)

命名空間std::chrono

編譯程序選項:/std:c++latest 是必要的。

另請參閱

to_sys
zoned_time 構造 函數