Ho stringhe di data come 2009-02-28 15:40:05 AEDST e voglio convertirlo in struttura SYSTEMTIME. Finora ho:Come convertire tra fusi orari con l'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);
Tuttavia il fuso orario locale non è AEDST. Quindi devo essere in grado di specificare il fuso orario durante la conversione in UTC.
Beh, sfortunatamente non puoi farlo con l'API win32 ... vedi http://msdn.microsoft.com/en-us/library/ms725481(VS.85).aspx Devi creare una variabile vuota e compilare manualmente, o utilizzare la libreria di tempo C standard. – uzbones
Vedere anche http://stackoverflow.com/questions/466071/how-do-i-get-a-specific-timezoneinformation-struct-in-win32 – uzbones
anche questo richiede XP o superiore. TzSpecificLocalTimeToSystemTime non funziona su Win2k – Tim