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

_mkgmtime, _mkgmtime32, _mkgmtime64

Convierte una hora UTC representada por tmstruct a una hora UTC representada por un tipo de time_t .

time_t _mkgmtime(
   struct tm* timeptr
);
__time32_t _mkgmtime32(
   struct tm* timeptr
);
__time64_t _mkgmtime64(
   struct tm* timeptr
);

timeptr

Un puntero a la hora UTC como structtm de convertir.

Una cantidad de __time32_t cualquiera de __time64_t que representa el número de segundos transcurridos desde la medianoche, el 1 de enero de 1970, en la hora universal coordinada (UTC). Si la fecha está fuera de intervalo (vea la sección comentarios) o la entrada no se puede interpretar como hora válido, el valor devuelto es – 1.

Las funciones de _mkgmtime32 y de _mkgmtime64 convierte una hora UTC en __time32_t o a __time64_t tipo representa la hora en la hora UTC. Para convertir una hora local a la hora UTC, utilice mktime, _mktime32, y _mktime64 en su lugar.

_mkgmtime es una función inline que se evalúa como _mkgmtime64, y time_t es equivalente a __time64_t. Si necesita hacer que el compilador para interpretar time_tcomo time_tde 32 bits anterior, puede definir _USE_32BIT_TIME_T. Esto no es recomendable porque la aplicación podría producir un error después del 19 de enero de 2038 (el intervalo máximo de time_tde 32 bits), y no se permite en plataformas de 64 bits.

La estructura de tiempo pasado se cambiará como sigue, de la misma forma que se modifican con las funciones de _mktime : los campos de tm_wday y de tm_yday se establecen en los nuevos valores basados en valores de tm_mday y de tm_year. Al especificar un tiempo de la estructura de tm , establezca el campo de tm_isdst :

  • 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 utiliza la variable de entorno t-z para determinar el horario de verano correcto. Si no se establece t-z, el sistema operativo se consulta para obtener el comportamiento regional correcto del horario de verano. tm_isdst es un campo obligatorio. Si no establece, su valor es indefinido y el valor devuelto de mktime es imprevisible.

El intervalo de la función de _mkgmtime32 es la medianoche, el 1 de enero de 1970, hora UTC 19 de enero, 3:14: 07, 2038, la hora UTC. El intervalo de _mkgmtime64 es la medianoche, el 1 de enero de 1970, hora UTC a 23:59: 59, el 31 de diciembre, 3000, la hora UTC. Resultados de una fecha que se fuera-de- intervalo en un valor devuelto de – 1. El intervalo de _mkgmtime depende de si _USE_32BIT_TIME_T está definido. Si no definido (valor predeterminado) el intervalo es el de _mkgmtime64; si no, se limita al intervalo de 32 bits de _mkgmtime32.

Observe que gmtime y localtime utilizan un único búfer estáticamente asignado para la conversión. Si proporciona este búfer a mkgmtime, se destruyen los contenido anteriores.

// crt_mkgmtime.c
#include <stdio.h>
#include <time.h>

int main()
{
    struct tm t1, t2;
    time_t now, mytime, gmtime;
    char buff[30];

    time( & now );

    _localtime64_s( &t1, &now );
    _gmtime64_s( &t2, &now );

    mytime = mktime(&t1);
    gmtime = _mkgmtime(&t2);

    printf("Seconds since midnight, January 1, 1970\n");
    printf("My time: %I64d\nGM time (UTC): %I64d\n\n", mytime, gmtime);

    /* Use asctime_s to display these times. */

    _localtime64_s( &t1, &mytime );
    asctime_s( buff, sizeof(buff), &t1 );
    printf( "Local Time: %s\n", buff );

    _gmtime64_s( &t2, &gmtime );
    asctime_s( buff, sizeof(buff), &t2 );
    printf( "Greenwich Mean Time: %s\n", buff );

}

Seconds since midnight, January 1, 1970
My time: 1171588492
GM time (UTC): 1171588492

Local Time: Thu Feb 15 17:14:52 2007

Greenwich Mean Time: Fri Feb 16 01:14:52 2007

El ejemplo siguiente se muestra cómo la estructura incompleta se completa con los valores calculados del día de la semana y el día del año.

// crt_mkgmtime2.c
#include <stdio.h>
#include <time.h>
#include <memory.h>

int main()
{
    struct tm t1, t2;
    time_t gmtime;
    char buff[30];

    memset(&t1, 0, sizeof(struct tm));
    memset(&t2, 0, sizeof(struct tm));

    t1.tm_mon = 1;
    t1.tm_isdst = 0;
    t1.tm_year = 103;
    t1.tm_mday = 12;

    // The day of the week and year will be incorrect in the output here.
    asctime_s( buff, sizeof(buff), &t1);
    printf("Before calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
            buff, t1.tm_yday );

    gmtime = _mkgmtime(&t1);

    // The correct day of the week and year were determined.
    asctime_s( buff, sizeof(buff), &t1);
    printf("After calling _mkgmtime, t1 = %s t.tm_yday = %d\n",
            buff, t1.tm_yday );

}

Before calling _mkgmtime, t1 = Sun Feb 12 00:00:00 2003
 t.tm_yday = 0
After calling _mkgmtime, t1 = Wed Feb 12 00:00:00 2003
 t.tm_yday = 42

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft