Compartir a través de


_strtime_s, _wstrtime_s

Copia la hora actual en un búfer. Estas funciones son versiones de _strtime, _wstrtime con mejoras de seguridad como se describe en Características de seguridad de CRT.

Sintaxis

errno_t _strtime_s(
   char *buffer,
   size_t numberOfElements
);
errno_t _wstrtime_s(
   wchar_t *buffer,
   size_t numberOfElements
);
template <size_t size>
errno_t _strtime_s(
   char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrtime_s(
   wchar_t (&buffer)[size]
); // C++ only

Parámetros

buffer
Búfer (con una longitud mínima de 10 bytes) en el que se escribirá la hora.

numberOfElements
Tamaño del búfer.

Valor devuelto

Cero si es correcta.

Si se produce una condición de error, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si se produce un error, el valor devuelto es un código de error. Los códigos de error se definen en ERRNO.H; consulte la tabla siguiente para ver los errores exactos generados por esta función. Para obtener más información sobre los códigos de error, consulte errno constantes.

Condiciones de error

buffer numberOfElements Return Contenido de buffer
NULL (cualquiera) EINVAL No modificado
No es NULL (apunta al búfer válido) 0 EINVAL No modificado
No es NULL (apunta al búfer válido) 0 < tamaño < 9 EINVAL Cadena vacía
No es NULL (apunta al búfer válido) Tamaño > 9 0 Hora actual con el formato especificado en la sección de comentarios

Problemas de seguridad

Si se pasa un valor no válidoNULL para el búfer, se producirá una infracción de acceso si el numberOfElements parámetro es mayor que 9.

Si se pasa un valor de numberOfElements que es mayor que el tamaño real del búfer, se producirá una saturación en el búfer.

Comentarios

Estas funciones proporcionan versiones más seguras de _strtime y _wstrtime. La _strtime_s función copia la hora local actual en el búfer al que bufferapunta . La hora tiene el formato hh:mm:ss , donde hh es dos dígitos que representan la hora en notación de 24 horas, mm es dos dígitos que representan los minutos pasados de la hora y ss son dos dígitos que representan segundos. Por ejemplo, la cadena 18:23:44 representa 23 minutos y 44 segundos después de las 6 p.m. El búfer debe tener al menos 9 bytes de longitud; el segundo parámetro especifica el tamaño real.

_wstrtime_s es una versión con caracteres anchos de _strtime_s; el argumento y el valor devuelto de _wstrtime_s son cadenas de caracteres anchos. Por lo demás, estas funciones se comportan exactamente igual.

En C++, el uso de estas funciones se simplifica con las sobrecargas de plantilla; las sobrecargas pueden realizar una inferencia automáticamente de la longitud de búfer (lo que elimina el requisito de especificar un argumento de tamaño) y pueden reemplazar automáticamente funciones anteriores no seguras con sus homólogos seguros más recientes. Para obtener más información, consulte Sobrecargas de plantillas seguras.

Las versiones de la biblioteca de depuración de estas funciones rellenan primero el búfer con 0xFE. Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignación de rutina de texto genérico

Rutina TCHAR.H _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tstrtime_s _strtime_s _strtime_s _wstrtime_s

Requisitos

Routine Encabezado necesario
_strtime_s <time.h>
_wstrtime_s <time.h> o <wchar.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// strtime_s.c

#include <time.h>
#include <stdio.h>

int main()
{
    char tmpbuf[9];
    errno_t err;

    // Set time zone from TZ environment variable. If TZ is not set,
    // the operating system is queried to obtain the default value
    // for the variable.
    //
    _tzset();

    // Display operating system-style date and time.
    err = _strtime_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
      exit(1);
    }
    printf( "OS time:\t\t\t\t%s\n", tmpbuf );
    err = _strdate_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
       exit(1);
    }
    printf( "OS date:\t\t\t\t%s\n", tmpbuf );

}
OS time:            14:37:49
OS date:            04/25/03

Consulte también

Administración de tiempo
asctime_s, _wasctime_s
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
mktime, _mktime32, _mktime64
time, _time32, _time64
_tzset