Al utilizar la función getdynamictimezoneinformation, cómo convertir estas dos estructuras de fechas al formato de fecha/hora local.

programación


n usando la función GetDynamicTimeZoneInformation(&dtzi), y dentro de la estructura ‘dtzi’, le dice
le indicará si está en horario de verano o no y cuándo comenzará, a través de
estas dos fechas. El valor de retorno de esta función también le brinda la misma información.
Pero, ¿cómo puede alguien convertir estas fechas diurnas y/o fechas estándar?
estructuras en formatos legibles de fecha y hora locales. ¿Puedo preguntar cómo se hace esto en “C”? Sé que hay
Deben haber algunas conversiones, pero ¿cómo? Gracias de todos modos y por tu tiempo.

Lo que he probado:

el método de prueba y error. Usar ejemplos encontrados y luego aplicar la idea encontrada al problema. A veces no funciona del todo bien o no funciona en absoluto.

Solución 1

Estoy asumiendo aquí que estás hablando de convertir los dos SYSTEMTIME estructuras en el DYNAMIC_TIME_ZONE_INFORMATION objeto. Para lograr esto, creo que vas a comenzar por convertir el SYSTEMTIME estructura a un archivo local de tiempo usando SystemTimeToLocalFileTime función. Una vez que hayas hecho esto, utilizarás FileTimeToSystemTime para convertir la hora del archivo local a una SYSTEMTIME estructura que representa la fecha en hora local. Podría verse algo como esto:

C
SYSTEMTIME standardDate = timeZoneInfo.StandardDate;

FILETIME localFileTime;
SystemTimeToLocalFileTime(&standardDate, &localFileTime);

SYSTEMTIME localStandardDate;
FileTimeToSystemTime(&localFileTime, &localStandardDate);

char dateString[20];
sprintf(dateString, "%d-%02d-%02dT%02d:%02d:%02dT", localStandardDate.wYear, localStandardDate.wMonth, localStandardDate.wDay, localStandardDate.wHour, localStandardDate.wMinute, localStandardDate.wSecond);

Tenga en cuenta que solo estoy creando este método en el editor aquí, por lo que tal vez haya uno o dos errores tipográficos aquí.

コメント

タイトルとURLをコピーしました