std::chrono::is_am, std::chrono::is_pm, std::chrono::make12
Материал из cppreference.com
Определено в заголовочном файле <chrono> | ||
constexprbool is_am(conststd::chrono::hours& h )noexcept; | (1) | (начиная с C++20) |
constexprbool is_pm(conststd::chrono::hours& h )noexcept; | (2) | (начиная с C++20) |
constexprstd::chrono::hours make12(conststd::chrono::hours& h )noexcept; | (3) | (начиная с C++20) |
constexprstd::chrono::hours make24(conststd::chrono::hours& h, bool is_pm )noexcept; | (4) | (начиная с C++20) |
Эти функции помогают переводить время суток между 12-часовым форматом и 24-часовым форматом времени суток.
1) Определяет, является ли время в 24-часовом формате a.m. (ante meridiem, до полудня).
2) Определяет, является ли время в 24-часовом формате p.m. (post meridiem, после полудня).
3) Возвращает 12-часовой эквивалент времени в 24-часовом формате.
4) Возвращает 24-часовой эквивалент времени в 12-часовом формате h, где is_pm определяет, является ли время p.m.
[править]Параметры
h | — | 12-часовой или 24-часовой формат времени для обнаружения |
is_pm | — | является ли время 12-часового формата p.m. |
[править]Возвращаемое значение
1)0h <= h && h <= 11h.
2)12h <= h && h <= 23h.
3) Если h находится в диапазоне
[
0h,
23h]
, возвращает 12-часовой эквивалент в диапазоне [
1h,
12h]
. Иначе возвращаемое значение не указано.4) Если h находится в диапазоне
[
1h,
12h]
, возвращает 24-часовой эквивалент в диапазоне [
0h,
11h]
, если is_pm равно false или находится в диапазоне [
12h,
23h]
иначе. Иначе возвращаемое значение не указано.[править]Пример
Запустить этот код
#include <iostream>#include <iomanip>#include <utility>#include <chrono> int main(){usingnamespace std::chrono; static_assert( is_am(10h)&& is_am(11h)&&!is_am(12h)&&!is_am(23h)&&!is_pm(10h)&&!is_pm(11h)&& is_pm(12h)&& is_pm(23h)); std::cout<<"make12():\n"; for(const hours hh :{ 0h, 1h, 11h, 12h, 13h, 23h }){const hours am{make12(hh)};std::cout<<std::setw(2)<< hh.count()<<"ч == "<<std::setw(2)<< am.count()<<(is_am(hh)?"ч a.m.\n":"ч p.m.\n");} std::cout<<"\nmake24():\n"; using p =std::pair<hours, bool>; for(constauto&[hh, pm]:{ p{1h, 0}, p{12h, 0}, p{1h, 1}, p{12h, 1}}){std::cout<<std::setw(2)<< hh.count()<<(pm ?"ч p.m.":"ч a.m.")<<" == "<<std::setw(2)<< make24(hh, pm).count()<<"ч\n";}}
Вывод:
make12(): 0ч == 12ч a.m. 1ч == 1ч a.m. 11ч == 11ч a.m. 12ч == 12ч p.m. 13ч == 1ч p.m. 23ч == 11ч p.m. make24(): 1ч a.m. == 1ч 12ч a.m. == 0ч 1ч p.m. == 13ч 12ч p.m. == 12ч