Espacios de nombres
Variantes
Acciones

std::chrono::is_am, std::chrono::is_pm, std::chrono::make12

De cppreference.com
< cpp‎ | chrono
 
 
Biblioteca de servicios
 
 
Definido en el archivo de encabezado <chrono>
constexprbool is_am(conststd::chrono::hours& h )noexcept;
(1) (desde C++20)
constexprbool is_pm(conststd::chrono::hours& h )noexcept;
(2) (desde C++20)
constexprstd::chrono::hours make12(conststd::chrono::hours& h )noexcept;
(3) (desde C++20)
constexprstd::chrono::hours make24(conststd::chrono::hours& h,
                                     bool is_pm )noexcept;
(4) (desde C++20)

Estas funciones ayudan a traducir entre una hora del día en formato de 12 horas y una hora del día en formato de 24 horas.

1) Detecta si el formato de 24 horas es a.m. (ante meridiem, antes del mediodía).
2) Detecta si el formato de 24 horas es p.m. (post meridiem, después del mediodía).
3) Devuelve el equivalente en 12 horas de un formato de 24 horas.
4) Devuelve el equivalente en 24 horas de un formato de 12 horas h, donde is_pm determina si la hora es p.m.

[editar]Parámetros

h - Formato de 12 o 24 horas a detectar.
is_pm - Si el formato de 12 horas es p.m.

[editar]Valor de retorno

1)0h <= h && h <= 11h.
2)12h <= h && h <= 23h.
3) If h se encuentra en el rango [0h, 23h], devuelve el equivalente de 12 horas en el rango [1h, 12h]. De lo contrario, el valor de retorno no está especificado.
4) If h se encuentra en el rango [1h, 12h], devuelve el equivalente de 24 horas en el rango [0h, 11h] si is_pm es false, o de lo contrario, en el rango [12h, 23h]. De lo contrario, el valor de retorno no está especificado.

[editar]Ejemplo

#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()<<"h == "<<std::setw(2)<< am.count()<<(is_am(hh)?"h a.m.\n":"h 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 ?"h p.m.":"h a.m.")<<" == "<<std::setw(2)<< make24(hh, pm).count()<<"h\n";}}

Salida:

make12(): 0h == 12h a.m. 1h == 1h a.m. 11h == 11h a.m. 12h == 12h p.m. 13h == 1h p.m. 23h == 11h p.m.   make24(): 1h a.m. == 1h 12h a.m. == 0h 1h p.m. == 13h 12h p.m. == 12h
close