当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

C和C++的时间编程

    unix时间相关,也是标准库的
    这些在<time.h>
    1.timegm函数只是将struct tm结构转成time_t结构,不使用时区信息;
    time_t timegm(struct tm *tm);

    2.mktime使用时区信息
    time_t mktime(struct tm *tm);

    timelocal 函数是GNU扩展的与posix函数mktime相当
    time_t timelocal (struct tm *tm);

    3.gmtime函数只是将time_t结构转成struct tm结构,不使用时区信息;
    struct tm * gmtime(const time_t *clock);

    4.localtime使用时区信息
    struct tm * localtime(const time_t *clock);

    1.time获取时间,stime设置时间
    time_t t;
    t = time(&t);
    2.stime其参数应该是GMT时间,根据本地时区设置为本地时间;
    int stime(time_t *tp)

    3.UTC=true 表示采用夏时制;
    4.文件的修改时间等信息全部采用GMT时间存放,不同的系统在得到修改时间后通过localtime转换成本地时间;
    5.设置时区推荐使用setup来设置;
    6.设置时区也可以先更变/etc/sysconfig/clock中的设置 再将ln -fs /usr/share/zoneinfo/xxxx/xxx /etc/localtime 才能重效

    time_t只能表示68年的范围,即mktime只能返回1970-2038这一段范围的time_t
    看看你的系统是否有time_t64,它能表示更大的时间范围


    Window里面的一些不一样的

    CTime MFC类,好像就是把time.h封了个类,没扩展
    CTime t = GetCurrentTime();

    SYSTEMTIME 结构包含毫秒信息
    typedef struct _SYSTEMTIME {
     WORD wYear;
     WORD wMonth;
     WORD wDayOfWeek;
     WORD wDay;
     WORD wHour;
     WORD wMinute;
     WORD wSecond;
     WORD wMilliseconds;
    } SYSTEMTIME, *PSYSTEMTIME;

    SYSTEMTIME t1;
    GetSystemTime(&t1)
    CTime curTime(t1);
    WORD ms = t1.wMilliseconds;

    SYSTEMTIME sysTm;
    ::GetLocalTime(&sysTm);


    在time.h中的_strtime() //只能在windows中用
    char t[11];
    _strtime(t);
    puts(t);

    ------------------------------------------------------------------------------
    _timeb定义在SYS\TIMEB.H,有四个fields
    dstflag
    millitm
    time
    timezone

    void _ftime( struct _timeb *timeptr );

    struct _timeb timebuffer;
       _ftime( &timebuffer );
    取当前时间:文档讲可以到ms,有人测试,好象只能到16ms!


    -------------------------------------------------------------------------
    如何设定当前系统时间---windows
    SYSTEMTIME  m_myLocalTime,*lpSystemTime;
        m_myLocalTime.wYear=2003;
        m_myLocalTime.wMonth=1;
        m_myLocalTime.wDay=1;
        m_myLocalTime.wHour=0;
        m_myLocalTime.wMinute=0;
        m_myLocalTime.wSecond=0;
        m_myLocalTime.wMilliseconds=0;
        lpSystemTime=&m_myLocalTime;
        if( SetLocalTime(lpSystemTime) ) //此处换成 SetSystemTime( )也不行
           MessageBox("OK !");
        else
           MessageBox("Error !");


    SYSTEMTIME  m_myLocalTime,*lpSystemTime;
    m_myLocalTime.wYear=2003;
    m_myLocalTime.wMonth=1;
    m_myLocalTime.wDay=1;
    lpSystemTime=&m_myLocalTime;
    if( SetDate(lpSystemTime) ) //此处换成 SetSystemTime( )也不行
        MessageBox("OK !");
    else
        MessageBox("Error !");


    -----------------------------------------------------------------------------
    用clock()函数,得到系统启动以后的毫秒级时间,然后除以CLOCKS_PER_SEC,就可以换成“秒”,标准c函数。
    clock_t  clock ( void );

    #include <time.h>
    clock_t t = clock();
    long sec = t / CLOCKS_PER_SEC;
    他是记录时钟周期的,实现看来不会很精确,需要试验验证;

    ---------------------------------------------------------------------------
    据说tc2.0的time结构含有毫秒信息
    #include   <stdio.h>
    #include   <dos.h>

    int main(void)
    {
       struct  time t;

       gettime(&t);
       printf("The current time is: %2d:%02d:%02d.%02d\n",
              t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
       return 0;
    }
    time 是一个结构体,, 其中成员函数 ti_hund 是豪秒。。。上程序可以在tc2.0运行

 

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接