Namespaces
Variants

std:: asctime

From cppreference.net
< cpp ‎ | chrono ‎ | c
Definido en el encabezado <ctime>
char * asctime ( const std:: tm * time_ptr ) ;

Convierte el tiempo de calendario dado std::tm a una representación textual de la siguiente forma fija de 25 caracteres: Www Mmm dd hh : mm : ss yyyy\n .

  • Www - día de la semana abreviado en inglés de tres letras desde time_ptr - > tm_wday , uno de Mon , Tue , Wed , Thu , Fri , Sat , Sun .
  • Mmm - nombre del mes abreviado en inglés de tres letras desde time_ptr - > tm_mon , uno de Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec .
  • dd - día del mes de 2 dígitos desde timeptr - > tm_mday como si fuera impreso por sprintf usando % 2d .
  • hh - hora de 2 dígitos desde timeptr - > tm_hour como si fuera impreso por sprintf usando % .2d .
  • mm - minuto de 2 dígitos desde timeptr - > tm_min como si fuera impreso por sprintf usando % .2d .
  • ss - segundo de 2 dígitos desde timeptr - > tm_sec como si fuera impreso por sprintf usando % .2d .
  • yyyy - año de 4 dígitos desde timeptr - > tm_year + 1900 como si fuera impreso por sprintf usando % 4d .

El comportamiento es indefinido si algún miembro de * time_ptr está fuera de su rango normal.

El comportamiento es indefinido si el año calendario indicado por time_ptr - > tm_year tiene más de 4 dígitos o es menor que el año 1000.

La función no admite localización, y el carácter de nueva línea no puede eliminarse.

La función modifica el almacenamiento estático y no es segura para hilos.

Contenidos

Parámetros

time_ptr - puntero a un std::tm objeto que especifica el tiempo a imprimir

Valor de retorno

Puntero a una cadena de caracteres estática terminada en nulo que contiene la representación textual de fecha y hora. La cadena puede ser compartida entre std::asctime y std::ctime , y puede ser sobrescrita en cada invocación de cualquiera de estas funciones.

Notas

Esta función retorna un puntero a datos estáticos y no es segura para hilos. POSIX marca esta función como obsoleta y recomienda en su lugar std::strftime dependiente de la configuración regional. En std::locale ("C") la cadena de formato std::strftime "%c \n " será una coincidencia exacta con la salida de std::asctime , mientras que en otras configuraciones regionales la cadena de formato "%a %b %e %H:%M:%S %Y \n " será una coincidencia potencialmente más cercana pero no siempre exacta.

POSIX limita los comportamientos indefinidos solo a los casos cuando la cadena de salida sería más larga de 25 caracteres, cuando timeptr->tm_wday o timeptr->tm_mon no están dentro de los rangos esperados, o cuando timeptr->tm_year excede INT_MAX - 1990 .

Algunas implementaciones manejan timeptr - > tm_mday == 0 como si significara el último día del mes anterior.

Ejemplo

#include <ctime>
#include <iomanip>
#include <iostream>
int main()
{
    const std::time_t now = std::time(nullptr);
    for (const char* localeName : {"C", "en_US.utf8", "de_DE.utf8", "ja_JP.utf8"})
    {
        std::cout << "locale " << localeName << ":\n" << std::left;
        std::locale::global(std::locale(localeName));
        std::cout << std::setw(40) << "    asctime" << std::asctime(std::localtime(&now));
        // strftime output for comparison:
        char buf[64];
        if (strftime(buf, sizeof buf, "%c\n", std::localtime(&now)))
            std::cout << std::setw(40) << "    strftime %c" << buf;
        if (strftime(buf, sizeof buf, "%a %b %e %H:%M:%S %Y\n", std::localtime(&now)))
            std::cout << std::setw(40) << "    strftime %a %b %e %H:%M:%S %Y" << buf;
        std::cout << '\n';
    }
}

Salida posible:

locale C:
    asctime                             Wed Nov  4 00:45:01 2020
    strftime %c                         Wed Nov  4 00:45:01 2020
    strftime %a %b %e %H:%M:%S %Y       Wed Nov  4 00:45:01 2020
locale en_US.utf8:
    asctime                             Wed Nov  4 00:45:01 2020
    strftime %c                         Wed 04 Nov 2020 12:45:01 AM UTC
    strftime %a %b %e %H:%M:%S %Y       Wed Nov  4 00:45:01 2020
locale de_DE.utf8:
    asctime                             Wed Nov  4 00:45:01 2020
    strftime %c                         Mi 04 Nov 2020 00:45:01 UTC
    strftime %a %b %e %H:%M:%S %Y       Mi Nov  4 00:45:01 2020
locale ja_JP.utf8:
    asctime                             Wed Nov  4 00:45:01 2020
    strftime %c                         2020年11月04日 00時45分01秒
    strftime %a %b %e %H:%M:%S %Y       水 11月  4 00:45:01 2020

Véase también

convierte un objeto std::time_t a una representación textual
(función)
convierte un objeto std::tm a una representación textual personalizada
(función)
(C++11)
formatea y emite un valor de fecha/hora de acuerdo al formato especificado
(plantilla de función)