2017-06-21 2 views
0

ich unter api in meinem CodeGetCurrentTime() doesnot richtige Zeit zurückkehrt

COleDateTime timeStamp = COleDateTime::GetCurrentTime(); 

bin mit Und es ist falsch Wert geben

Wenn Systemzeit 00.36.08 war 03.36 zurückkehren : 08.

Ich überprüfte meine Systemzeiteinstellung und es verwendet US regionale Einstellungen.

Hatte jemand ähnliches Verhalten erlebt?

Antwort

2

COleDateTime::GetCurrentTime(); ist in UTC, so dass Sie es zu einem Lokalzeit konvertieren müssen, finden Sie this:

COleDateTime dt; // yor UTC time 
.......... 
TIME_ZONE_INFORMATION timeZoneInformation; 
DWORD dwTZ = GetTimeZoneInformation(&timeZoneInformation); 
if(dwTZ == TIME_ZONE_ID_STANDARD || dwTZ == TIME_ZONE_ID_DAYLIGHT) 
{ 
    SYSTEMTIME timeUTC 
    dt.GetAsSystemTime(&timeUTC); 
    SYSTEMTIME timeLocal; 
    SystemTimeToTzSpecificLocalTime(&timeZoneInformation, &timeUTC, &timeLocal); 
    dt = COleDateTime(&timeLocal); 
} 
else 
{ 
    //error handling 
} 

Sie sich auch diese die program folgende Verwendung überprüfen:

UTC
#include <windows.h> 
#include <stdio.h> 

void main() 
{ 
    SYSTEMTIME st, lt; 

    GetSystemTime(&st); 
    GetLocalTime(&lt); 

    printf("The system time is: %02d:%02d\n", st.wHour, st.wMinute); 
    printf(" The local time is: %02d:%02d\n", lt.wHour, lt.wMinute); 
} 
+0

Zone Meine Zeit ist -5. und ich sehe nicht die große Zeitdifferenz zwischen Systemzeit und -zeit, die von GetCurrentTime() zurückgegeben wurde. – Geek

+1

@Geek Bitte überprüfen Sie Ihre Ortszeit und sytime mit 'GetSystemTime' und' GetLocalTime' wie in meinem zweiten Beispiel – Rama

Verwandte Themen