J'ai des chaînes de date telles que 2009-02-28 15:40:05 AEDST et je veux le convertir en structure SYSTEMTIME. Jusqu'à présent j'ai:Comment faire pour convertir entre les fuseaux horaires avec Win32 API?
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);
Cependant, mon fuseau horaire local n'est pas AEDST. Je dois donc pouvoir spécifier le fuseau horaire lors de la conversion en UTC.
Eh bien, malheureusement, vous ne pouvez pas faire cela avec l'API win32 ... voir http://msdn.microsoft.com/en-us/library/ms725481(VS.85).aspx Vous devrez soit créer une variable vide et remplissez-le manuellement ou utilisez la bibliothèque de temps C standard. – uzbones
Voir également http://stackoverflow.com/questions/466071/how-do-i-get-a-specific-timezoneinformation-struct-in-win32 – uzbones
cela nécessite également XP ou plus. TzSpecificLocalTimeToSystemTime ne fonctionne pas sur Win2k – Tim