1、在时区中设置自动夏令时
2、运行程序,使用CTime::GetCurrentTime()获取时间,(不要推出程序)
3、取消夏令时
4、再次使用CTime::GetCurrentTime()获取时间。发现它获取的时间和右下脚的时间是不一致的。注:
1、如果第1步不设置夏令时,在运行程序后再设置夏令时则没有这个问题。
2、使用CTime::GetLocalTm()则没有问题应该是CTime::GetCurrentTime()有问题,可惜没有源码。附相关说明:
本地时间=UTC(格林威治时间)+时区偏移量+夏令时偏移量多谢各为发表高见

解决方案 »

  1.   


    ..\Program Files\Microsoft Visual Studio\VC98\MFC\SRCTIMECORE.CPP
      

  2.   

    那个里面只有这个,没有具体实现

    CTime PASCAL CTime::GetCurrentTime()
    // return the current system time
    {
    return CTime(::time(NULL));
    }
      

  3.   

    我习惯用COleDateTime,看看是否有所改变
      

  4.   

    ColeDateTime dtTime = ColeDataTime::GetCurrentTime();
    ------------------------------------------------
    or
    CTime curTime = CTime::GetCurrentTime();
    ------------------------------------------------
    or
    SYSTEMTIME sysTime;
    GetLocalTime(&sysTime);
    ------------------------------------------------
    or
    Struct tm *Ptm;
    unsigned long sTime;
    Ptm = LocalTime(&sTime);
      

  5.   


    ATLTIME_INLINE CTime WINAPI CTime::GetCurrentTime() throw()
    {
    return( CTime( ::_time64( NULL ) ) );
    }ATLTIME_INLINE CTime::CTime( __time64_t time )  throw():
    m_time( time )
    {
    }__time64_t __cdecl _time64 (
            __time64_t *timeptr
            )
    {
            __time64_t tim;
            FT nt_time;        GetSystemTimeAsFileTime( &(nt_time.ft_struct) );        tim = (__time64_t)((nt_time.ft_scalar - EPOCH_BIAS) / 10000000i64);
            if (timeptr)
                    *timeptr = tim;         /* store time if requested */        return tim;
    }关键是 GetSystemTimeAsFileTime