Tôi có các chuỗi ngày như 2009-02-28 15:40:05 AEDST và muốn chuyển đổi nó thành cấu trúc SYSTEMTIME. Cho đến nay tôi có:Làm thế nào để chuyển đổi giữa các múi giờ với 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);
Tuy nhiên múi giờ địa phương của tôi không phải là AEDST. Vì vậy, tôi cần phải có thể chỉ định múi giờ khi chuyển đổi sang UTC.
Thật không may là bạn không thể làm điều đó với API win32 ... xem http://msdn.microsoft.com/en-us/library/ms725481(VS.85).aspx Bạn sẽ cần phải tạo biến trống và điền nó theo cách thủ công hoặc sử dụng thư viện thời gian C chuẩn. – uzbones
Cũng thấy http://stackoverflow.com/questions/466071/how-do-i-get-a-specific-timezoneinformation-struct-in-win32 – uzbones
điều này cũng yêu cầu XP hoặc cao hơn. TzSpecificLocalTimeToSystemTime không hoạt động trên Win2k – Tim