Exportar (0) Imprimir
Expandir todo
and
div
eof
not
or
xor
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

mktime, _mktime32, _mktime64

Convierte la hora local en un valor de calendario.

time_t mktime(
   struct tm *timeptr 
);
__time32_t _mktime32(
   struct tm *timeptr 
);
__time64_t _mktime64(
   struct tm *timeptr 
);

timeptr

Puntero a estructura de hora; vea asctime.

_mktime32 devuelve la hora de calendario especificada codificada como valor de tipo time_t. Si timeptr hace referencia a una fecha anterior a la medianoche del 1 de enero de 1970, o si la hora de calendario no se puede representar, _mktime32 devuelve –1 convertido en el tipo time_t. Si se usa _mktime32 y si timeptr hace referencia a una fecha posterior a las 03:14:07 del 19 de enero de 2038, hora universal coordinada (UTC), devolverá –1 convertido en el tipo time_t.

_mktime64 devolverá –1 convertido en el tipo __time64_t si timeptr hace referencia a una fecha posterior a las 23:59:59 del 31 de diciembre de 3000, UTC.

Las funciones mktime, _mktime32 y _mktime64 convierten la estructura de tiempo proporcionada (posiblemente incompleta) a la que señala timeptr en una estructura totalmente definida con valores normalizados y, después, la convierte en un valor de tiempo de calendario de time_t. El tiempo convertido tiene la misma codificación que los valores devueltos por la función time. Los valores originales de los componentes tm_wday y tm_yday de la estructura timeptr se omiten, y los valores originales de los demás componentes no se limitan a los intervalos normales.

mktime es una función insertada equivalente a _mktime64, a menos que _USE_32BIT_TIME_T esté definido, en cuyo caso equivale a _mktime32.

Después de un ajuste a la hora UTC, _mktime32 controla las fechas a partir de la medianoche del 1 de enero de 1970 hasta las 03:14:07 del 19 de enero de 2038. _mktime64 controla las fechas desde la medianoche del 1 de enero de 1970 a las 23:59:59 del 31 de diciembre de 3000. Este ajuste puede hacer que estas funciones devuelvan -1 (convertido en time_t, __time32_t o __time64_t), aunque la fecha especificada esté dentro del intervalo. Por ejemplo, si se encuentra en El Cairo, Egipto, que va dos horas por delante de UTC, primero se restarán dos horas de la fecha que especifique en timeptr, lo que puede poner la fecha fuera del intervalo.

Estas funciones se pueden usar para validar y rellenar una estructura de tm. Si se ejecutan correctamente, estas funciones establecen los valores de tm_wday y tm_yday como corresponda, y establecen los demás componentes de forma que representen la hora de calendario especificada, pero con los valores dentro de los intervalos normales. El valor final de tm_mday no se establece hasta que se determinan tm_mon y tm_year. Al especificar una estructura de hora de tm, establezca el campo tm_isdst en:

  • Cero (0) para indicar que está vigente la hora estándar.

  • Un valor mayor que 0 para indicar que está vigente el horario de verano.

  • Un valor menor que cero para que el código de la biblioteca en tiempo de ejecución de C calcule si está vigente la hora estándar o el horario de verano.

La biblioteca en tiempo de ejecución de C determinará el comportamiento del horario de verano partiendo de la variable de entorno ZH. Si ZH no está establecida, se usa la llamada a GetTimeZoneInformation de la API de Win32 para obtener del sistema operativo la información del horario de verano. Si se produce un error, la biblioteca supone que se usan las reglas de Estados Unidos para implementar el cálculo del horario de verano. tm_isdst es un campo obligatorio. Si no se establece, su valor es indefinido y el valor devuelto de estas funciones es imprevisible. Si timeptr señala a una estructura de tm devuelta por una llamada anterior a asctime, gmtime o localtime (o las variantes de estas funciones), el campo tm_isdst contiene el valor correcto.

Observe que gmtime y localtime (y _gmtime32, _gmtime64, _localtime32 y _localtime64) usan un único búfer por subproceso para la conversión. Si proporciona este búfer a mktime, _mktime32 o _mktime64, se destruye el contenido anterior.

Estas funciones validan su parámetro. Si timeptr es un puntero nulo, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, las funciones devuelven -1 y establecen errno en EINVAL.

Rutina

Encabezado necesario

mktime

<time.h>

_mktime32

<time.h>

_mktime64

<time.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Bibliotecas

Todas las versiones de las bibliotecas en tiempo de ejecución de C.

// crt_mktime.c
/* The example takes a number of days
 * as input and returns the time, the current
 * date, and the specified number of days.
 */

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

int main( void )
{
   struct tm  when;
   __time64_t now, result;
   int        days;
   char       buff[80];

   time( &now );
   _localtime64_s( &when, &now );
   asctime_s( buff, sizeof(buff), &when );
   printf( "Current time is %s\n", buff );
   days = 20;
   when.tm_mday = when.tm_mday + days;
   if( (result = mktime( &when )) != (time_t)-1 ) {
      asctime_s( buff, sizeof(buff), &when );
      printf( "In %d days the time will be %s\n", days, buff );
   } else
      perror( "mktime failed" );
}

Current time is Fri Apr 25 13:34:07 2003

In 20 days the time will be Thu May 15 13:34:07 2003

System::DateTime::DateTime

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft