Ich habe Datumsstrings wie 2009-02-28 15:40:05 AEDST und möchte es in SYSTEMTIME Struktur konvertieren. Bisher habe ich:Wie konvertiert man zwischen Zeitzonen mit 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);
Allerdings ist meine lokale Zeitzone nicht AEDST. Ich muss also in der Lage sein, die Zeitzone bei der Konvertierung in UTC anzugeben.
Nun leider können Sie das nicht mit der Win32-API tun ... siehe http://msdn.microsoft.com/en-us/library/ms725481(VS.85).aspx Sie müssen entweder eine leere Variable erstellen und füllen Sie es manuell aus, oder verwenden Sie die Standard-C-Zeitbibliothek. – uzbones
Siehe auch http://stackoverflow.com/questions/466071/how-do-i-get-a-specific-timezoneinformation-struct-in-win32 – uzbones
dies erfordert auch XP oder höher. TzSpecificLocalTimeToSystemTime funktioniert nicht auf Win2k – Tim