choose
列舉
與 搭配 time_zone
使用 , zoned_time
以指出如何處理模棱兩可或不存在 local_time
的 sys_time
轉換。
語法
enum class choose { // C++20
earliest,
latest
};
成員
元素 | 描述 |
---|---|
earliest |
如果時間轉換模棱兩可,請使用較早的時間點。 |
latest |
如果時間轉換模棱兩可,請使用稍後的時間點。 |
備註
如果轉換的結果為 nonexistent_local_time
,則和中的earliest
latest
時間相同。
模棱兩可的轉換錯誤
從日光節約時間轉換到秋季的標準時間期間,時鐘基本上會增加一小時。 這可能會造成混淆,因為轉換到標準時間是否意味著失去一小時? 藉由倒退一小時,轉換前的小時會在時鐘調整標準時間之後重複。 請考慮紐約標準時間的變更,該時間發生在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
是必要的。