0
我使用下面的API正确的时间在我的代码GetCurrentTime()返回亘古
COleDateTime timeStamp = COleDateTime::GetCurrentTime();
而且它给不正确的值
当系统时间为12时36分08秒这是返回03:36 :08。
我检查了我的系统时间设置,它使用美国的区域设置。
有没有人遇到类似的行为?
我使用下面的API正确的时间在我的代码GetCurrentTime()返回亘古
COleDateTime timeStamp = COleDateTime::GetCurrentTime();
而且它给不正确的值
当系统时间为12时36分08秒这是返回03:36 :08。
我检查了我的系统时间设置,它使用美国的区域设置。
有没有人遇到类似的行为?
COleDateTime::GetCurrentTime();
是UTC,所以你需要将它转化成你的本地时间,看到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
}
您也可以通过检查此以下program:
#include <windows.h>
#include <stdio.h>
void main()
{
SYSTEMTIME st, lt;
GetSystemTime(&st);
GetLocalTime(<);
printf("The system time is: %02d:%02d\n", st.wHour, st.wMinute);
printf(" The local time is: %02d:%02d\n", lt.wHour, lt.wMinute);
}
我的时区是UTC -5。并且我没有看到由GetCurrentTime()返回的系统时间和时间之间的5小时差异。 – Geek
@Geek请在我的第二个示例中使用'GetSystemTime'和'GetLocalTime'来检查您的本地时间和系统时间 – Rama