Tengo cadenas de fecha como 2009-02-28 15:40:05 AEDST y quiero convertirlo en estructura SYSTEMTIME. Hasta ahora tengo:Cómo convertir entre zonas horarias con API win32?
SYSTEMTIME st;
FILETIME ft;
SecureZeroMemory(&st, sizeof(st));
sscanf_s(contents, "%u-%u-%u %u:%u:%u",
&st.wYear,
&st.wMonth,
&st.wDay,
&st.wHour,
&st.wMinute,
&st.wSecond);
// Timezone correction
SystemTimeToFileTime(&st, &ft);
LocalFileTimeToFileTime(&ft, &ft);
FileTimeToSystemTime(&ft, &st);
Sin embargo, mi zona horaria local no es AEDST. Por lo tanto, debo poder especificar la zona horaria al convertir a UTC.
Bueno, lamentablemente no se puede hacer eso con la API win32 ... ver http://msdn.microsoft.com/en-us/library/ms725481(VS.85).aspx Deberá crear una variable vacía y llenarlo manualmente, o usar la biblioteca de tiempo C estándar. – uzbones
También vea http://stackoverflow.com/questions/466071/how-do-i-get-a-specific-timezoneinformation-struct-in-win32 – uzbones
, esto también requiere XP o superior. TzSpecificLocalTimeToSystemTime no funciona en Win2k – Tim