C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- std::chrono::duration
- std::chrono::ceil(std::chrono::duration)
- std::chrono::round(std::chrono::duration)
- std::chrono::abs(std::chrono::duration)
- operator+,-,*,/,%(std::chrono::duration)
- operator==,!=,<,<=,>,>=,<=>(std::chrono::duration)
- std::chrono::duration_cast
- std::chrono::floor(std::chrono::duration)
- std::common_type(std::chrono::duration)
- std::formatter<std::chrono::duration>
- std::chrono::duration<Rep,Period>::operator+=, -=, *=, /=, %=
- std::chrono::operator<< (std::chrono::duration)
- std::chrono::from_stream (std::chrono::duration)
- std::chrono::duration<Rep,Period>::max
- std::chrono::duration<Rep,Period>::operator+(unary), std::chrono::duration<Rep,Period>::operator-(unary)
- std::chrono::duration<Rep,Period>::operator++, std::chrono::duration<Rep,Period>::operator--
- std::chrono::duration<Rep,Period>::zero
- std::chrono::duration<Rep,Period>::min
- std::chrono::duration<Rep,Period>::duration
- std::chrono::duration<Rep,Period>::operator=
- std::chrono::duration<Rep,Period>::count
- std::chrono::clock_cast
- std::chrono::is_am, std::chrono::is_pm, std::chrono::make12, std::chrono::make24
- std::chrono::system_clock
- std::chrono::steady_clock
- std::chrono::high_resolution_clock
- std::chrono::clock_time_conversion
- std::chrono::time_point
- C æ¥æåæ¶é´å·¥å ·
- std::chrono::is_clock
- std::chrono::utc_clock
- std::chrono::tai_clock
- std::chrono::gps_clock
- std::chrono::file_clock
- std::chrono::local_t
- std::chrono::day
- std::chrono::month
- std::chrono::year
- std::chrono::weekday
- std::chrono::operator/ (æ¥å)
- std::chrono::year_month_day
- std::chrono::year_month_day_last
- std::chrono::year_month_weekday
- std::chrono::year_month_weekday_last
- std::chrono::weekday_indexed
- std::chrono::weekday_last
- std::chrono::month_day
- std::chrono::month_day_last
- std::chrono::month_weekday
- std::chrono::month_weekday_last
- std::chrono::year_month
- std::chrono::tzdb
- std::chrono::tzdb_list
- std::chrono::get_tzdb_list, std::chrono::get_tzdb, std::chrono::remote_version, std::chrono::reload_tzdb
- std::chrono::time_zone
- std::chrono::locate_zone
- std::chrono::current_zone
- std::chrono::zoned_time
- std::chrono::time_zone_link
- std::chrono::leap_second
- std::chrono::time_of_day
- std::chrono::last_spec
- std::chrono::treat_as_floating_point
- std::literals::chrono_literals::operator""ns
- std::literals::chrono_literals::operator""y
- std::literals::chrono_literals::operator""d
- std::literals::chrono_literals::operator""s
- std::literals::chrono_literals::operator""ms
- std::literals::chrono_literals::operator""us
- std::literals::chrono_literals::operator""h
- std::literals::chrono_literals::operator""min
- std::chrono::duration_values
- std::chrono::nonexistent_local_time
- std::chrono::ambiguous_local_time
- 注é
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >æ¥æåæ¶é´å·¥å · > std::chrono::duration
std::chrono::duration
ç±»æ¨¡æ¿ std::chrono::duration 表示æ¶é´é´éã
å®ç± Rep ç±»åç计次æ°åè®¡æ¬¡å¨æç»æï¼å
¶ä¸è®¡æ¬¡å¨ææ¯ä¸ä¸ªç¼è¯ææçæ°å¸¸éï¼è¡¨ç¤ºä»ä¸ä¸ªè®¡æ¬¡å°ä¸ä¸ä¸ªçç§æ°ã
åå¨äº duration çæ°æ®ä»
æ Rep ç±»åç计次æ°ãè¥ Rep æ¯æµ®ç¹æ°ï¼å duration è½è¡¨ç¤ºå°æ°ç计次æ°ã Period 被å
å«ä¸ºæ¶é¿ç±»åçä¸é¨åï¼ä¸åªå¨ä¸åæ¶é¿é´è½¬æ¢æ¶ä½¿ç¨ã
æåç±»å
| Â | |
| æåç±»å | å®ä¹ |
rep
|
Rep ï¼è¡¨ç¤ºè®¡æ¬¡æ°çç®æ¯ç±»å
|
period
|
Period (C++17 å)typename Period::type (C++17 èµ·) ï¼è¡¨ç¤ºè®¡æ¬¡å¨æç std::ratio ï¼å³æ¯ç§ç次æ°ï¼
|
æå彿°
| æé æ° duration (å ¬å¼æå彿°) | |
| èµå¼å
容 (å ¬å¼æå彿°) | |
| è¿å计次çè®¡æ° (å ¬å¼æå彿°) | |
| [éæ] |
è¿åç¹æ®æ¶é¿å¼é¶ (å ¬å¼éææå彿°) |
| [éæ] |
è¿åç¹æ®æ¶é¿å¼æå°å¼ (å ¬å¼éææå彿°) |
| [éæ] |
è¿åç¹æ®æ¶é¿å¼æå¤§å¼ (å ¬å¼éææå彿°) |
| å®ç°ä¸å
+ åä¸å
- (å ¬å¼æå彿°) | |
| é墿éåæ»´çè®¡æ° (å ¬å¼æå彿°) | |
| å®ç°äºä¸ªæ¶é¿é´çå¤åèµå¼ (å ¬å¼æå彿°) |
éæå彿°
| å®ç°ä»¥æ¶é¿ä¸ºå®åçç®æ¯è¿ç® (彿°æ¨¡æ¿) | |
| (C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20 ä¸ç§»é¤)(C++20) |
æ¯è¾ä¸¤ä¸ªæ¶é¿ (彿°æ¨¡æ¿) |
| è½¬æ¢æ¶é¿å°å¦ä¸ä¸ªæ¥æä¸åååé´éçæ¶é¿ (彿°æ¨¡æ¿) | |
| (C++17) |
以åä¸åæ´çæ¹å¼ï¼å°ä¸ä¸ªæ¶é¿è½¬æ¢ä¸ºå¦ä¸ä¸ªæ¶é¿ (彿°æ¨¡æ¿) |
| (C++17) |
以åä¸åæ´çæ¹å¼ï¼å°ä¸ä¸ªæ¶é¿è½¬æ¢ä¸ºå¦ä¸ä¸ªæ¶é¿ (彿°æ¨¡æ¿) |
| (C++17) |
è½¬æ¢æ¶é¿å°å¦ä¸ä¸ªæ¶é¿ï¼å°±è¿åæ´ï¼å¶æ°ä¼å
(彿°æ¨¡æ¿) |
| (C++17) |
è·åæ¶é¿çç»å¯¹å¼ (彿°æ¨¡æ¿) |
| (C++20) |
è¿è¡ duration ä¸çæµè¾åº (彿°æ¨¡æ¿) |
| (C++20) |
æç
§æä¾çæ ¼å¼ï¼ä»æµåæ duration (彿°æ¨¡æ¿) |
è¾ å©ç±»å
| Â | |
| ç±»å | å®ä¹ |
| std::chrono::nanoseconds | duration</*è³å° 64 ä½çæç¬¦å·æ´æ°ç±»å*/, std::nano> |
| std::chrono::microseconds | duration</*è³å° 55 ä½çæç¬¦å·æ´æ°ç±»å*/, std::micro> |
| std::chrono::milliseconds | duration</*è³å° 45 ä½çæç¬¦å·æ´æ°ç±»å*/, std::milli> |
| std::chrono::seconds | duration</*è³å° 35 ä½çæç¬¦å·æ´æ°ç±»å*/> |
| std::chrono::minutes | duration</*è³å° 29 ä½çæç¬¦å·æ´æ°ç±»å*/, std::ratio<60>> |
| std::chrono::hours | duration</*è³å° 23 ä½çæç¬¦å·æ´æ°ç±»å*/, std::ratio<3600>> |
| std::chrono::days (C++20 èµ·) | duration</*è³å° 25 ä½çæç¬¦å·æ´æ°ç±»å*/, std::ratio<86400>> |
| std::chrono::weeks (C++20 èµ·) | duration</*è³å° 22 ä½çæç¬¦å·æ´æ°ç±»å*/, std::ratio<604800>> |
| std::chrono::months (C++20 èµ·) | duration</*è³å° 20 ä½çæç¬¦å·æ´æ°ç±»å*/, std::ratio<2629746>> |
| std::chrono::years (C++20 èµ·) | duration</*è³å° 17 ä½çæç¬¦å·æ´æ°ç±»å*/, std::ratio<31556952>> |
注æï¼å° hours 为æ¢çæ¯ä¸ªé¢å®ä¹æ¶é¿ç±»åè³å°æ¶µç ±292 å¹´çèå´ã
|
æ¯ä¸ªé¢å®ä¹æ¶é¿ç±»å |
(C++20 èµ·) |
è¾ å©ç±»
| ç¹å std::common_type ç¹å¾ (类模æ¿ç¹å) | |
| æç¤ºæ¶é¿å¯è½¬æ¢ä¸ºæ¥æä¸åè®¡æ¬¡çæ¶é¿ (类模æ¿) | |
| æé ç»å®ç±»å计次çé¶ãæå°åæå¤§å¼ (类模æ¿) | |
std::formatter çç¹åï¼ææä¾çæ ¼å¼æ ¼å¼å duration (类模æ¿ç¹å) |
åé¢é
| å®ä¹äºå
èå½å空é´
std::literals::chrono_literals | |
| (C++14) |
è¡¨ç¤ºå°æ¶ç std::chrono::duration åé¢é (彿°) |
| (C++14) |
表示åéç std::chrono::duration åé¢é (彿°) |
| (C++14) |
表示ç§ç std::chrono::duration åé¢é (彿°) |
| (C++14) |
表示毫ç§ç std::chrono::duration åé¢é (彿°) |
| (C++14) |
表示微ç§ç std::chrono::duration åé¢é (彿°) |
| (C++14) |
表示纳ç§ç std::chrono::duration åé¢é (彿°) |
|
注æï¼åé¢éåç¼ |
(C++20 èµ·) |
示ä¾
æ¤ç¤ºä¾æ¼ç¤ºå¦ä½å®ä¹å ç§èªå®ä¹æ¶é¿ç±»ååå¨ç±»åé´è½¬æ¢ï¼
#include <iostream> #include <chrono>  constexpr auto year = 31556952ll; // æ ¼éé«å©åå¹´çå¹³åç§æ°  int main() { using shakes = std::chrono::duration<int, std::ratio<1, 100000000>>; using jiffies = std::chrono::duration<int, std::centi>; using microfortnights = std::chrono::duration<float, std::ratio<14*24*60*60, 1000000>>; using nanocenturies = std::chrono::duration<float, std::ratio<100*year, 1000000000>>;  std::chrono::seconds sec(1);  std::cout << "1 second is:\n";  // æ 精度æå¤±çæ´æ°å°ºåº¦è½¬æ¢ï¼æ 转å std::cout << std::chrono::microseconds(sec).count() << " microseconds\n" << shakes(sec).count() << " shakes\n" << jiffies(sec).count() << " jiffies\n";  // æç²¾åº¦æå¤±çæ´æ°å°ºåº¦è½¬æ¢ï¼éè¦è½¬å std::cout << std::chrono::duration_cast<std::chrono::minutes>(sec).count() << " minutes\n";  // æµ®ç¹å°ºåº¦è½¬æ¢ï¼æ 转å std::cout << microfortnights(sec).count() << " microfortnights\n" << nanocenturies(sec).count() << " nanocenturies\n"; }
è¾åºï¼
1 second is: 1000000 microseconds 100000000 shakes 100 jiffies 0 minutes 0.82672 microfortnights 0.316887 nanocenturies