MFC编程中CTime各种格式转换

    技术2022-05-20  35

     

    MFC编程中CTime各种格式转换

    上次已经简单介绍了Ctime类的有关用法,本次着重介绍CTime与各种常用格式转换间的转化。

                                                ----笔者按

     (一)获得当前日期和时间,并可以转化为 CString

    CTime tm=CTime::GetCurrentTime();

     CString str=tm.Format("%Y-%m-%d");

    或者

    SYSTEMTIME systemTime;

    ::GetLocalTime(&systemTime);

    CTime cTimeNow(systemTime);

    // 还有一个GetSystemTime();

    VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:

    CTime t = CTime::GetCurrentTime(); //获取系统日期

    int d=t.GetDay(); //获得几号

    int y=t.GetYear(); //获取年份

    int m=t.GetMonth(); //获取当前月份

    int h=t.GetHour(); //获取当前为几时

    int mm=t.GetMinute(); //获取分钟

    int s=t.GetSecond(); //获取秒

    int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六

    如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:

    CTime t1( 1999, 3, 19, 22, 15, 0 );

    CTime t = CTime::GetCurrentTime(); 

    CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔

    int iDay=span.GetDays(); //获取这段时间间隔共有多少天

    int iHour=span.GetTotalHours(); //获取总共有多少小时

    int iMin=span.GetTotalMinutes();//获取总共有多少分钟

    int iSec=span.GetTotalSeconds();//获取总共有多少秒

    ()CString转化为CTime

    //转化为CTime

    CString strTime="2008-7-2  21:59:11";

    COleVariant vtime(strTime);

    vtime.ChangeType(VT_DATE);

    COleDateTime cOleTime=vtime;

    SYSTEMTIME systime;

    VariantTimeToSystemTime(cOleTime, &systime);

    CTime cTimeFromDB(systime);

    ()CTime COleDateTime

    CTime是无符号long型,范围0-4 2 9 4 9 6 7 2 9 5. 代表从197011日之后经过的秒数,所以到了2 0 3 7年它将达到4 2 9 4 9 6 7 2 9 5,从而不能再使用。

    COleDateTimedouble类型,占64位。代表从1 9 0 01 23 0号之后的天数(小时是天的小数部分),几千年之内不会溢出.

    CTime COleDateTime相互转换:

    //COleDataTime—>CTime

    COleDateTime cOleTime(1977,4,16,2,2,2);

    SYSTEMTIME systime;

    VariantTimeToSystemTime(cOleTime, &systime);

    CTime cTime(systime);

    //CTime—>time_t

    time_t tt=cTime.GetTime();

    //time_t—>COleDateTime

    COleDateTime cOleTime(tt);

    CTime _Variant_t相互转换

    SYSTEMTIME systime

    CTime cTime(2007,5,7,0,0,0);

    cTime.GetAsSystemTime(systime);//转成systime

    double dtime;

    SystemTimeToVariantTime(&systime,&dtime);

    _variant_t var_time(dtime,VT_DATE);//var_time就是转换结果

    补:

    GetSystemTime:所返回的是UTC.

    协调世界时(Coordinated Universal Time,简写作UTC,之前也被拼做Universal Time Coordinated,有时是Universal Coordinated Time)是由国际无线电咨询委员会定义和建议采用的,并由国际时间局(BIH)负责保持的以国际单位制(SI)秒为单位的时间标度。对与无线电规则相关 的大部分实际应用而言,协调世界时(UTC)与本初子午线(经度零度)上的平均太阳时等效。该时间过去以格林威治平均时(GMT)表示。  

    协调世界时使用24小时制的时钟表示,但也可以被转换为12小时制的时钟(AMPM)。UTC用于飞行和航海,它有时也被称作祖鲁。UTC使用阳历

    --------------------------------

    GetLocalTime:返回的是本地时间,我建议一般用这个时间来作为你使用的时间

     


    最新回复(0)