时间日期分类:
- 协调世界时UTC,为世界标准时间,也就是大家所熟知的格林威治标准时间。中国内地的时间与UTC的时差为+8,也就是UTC+8。
- 日历时间:是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。
- 时钟计时单元。一个时钟计时单元的时间长短是由CPU控制的,但它不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。在标准C/C++中,最小的计时单位是一毫秒。
程序运行时间:C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。clock()返回从“开启这个程序进程”到“程序中调用 clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。clock_t是用来保存时间的数据类型,是一个长整形数。 毫秒单位。
在time.h
文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元.举个例子,你可以使用公式 clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间。time_t time(time_t * timer); time.h
头文件中。获取日历时间。如果你已经声明了参数timer,你可以从参数timer返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970 年1月1日0时0分0秒)到现在此时的秒数。如果参数为空(NULL),函数将只通过返回值返回现在的日历时间。 秒单位。
1)struct tm * gmtime(const time_t *timer);
日历时间转换为世界标准时间。
2)struct tm * localtime(const time_t * timer);
将日历时间转化为本地时间。北京时间比世界标准时间晚8小时。
3)char * asctime(const struct tm * timeptr);
通过tm结构来生成具有固定格式的保存时间信息的字符串,只是把tm结构对象中的各个域填到时间字符串的相应位置。 格式:星期几 月份 日期时:分:秒 年\n\0
4)char * ctime(const time_t *timer);
把日历时间转化为本地时间,然后再生成格式化后的字符串。 格式同上。
5)size_t strftime(char *strDest,size_t maxsize,const char *format,const struct tm *timeptr);
自定义日期格式输出。
6)double difftime(time_t time1, time_t time0);
计算时间间隔,秒单位。
7)time_t mktime(struct tm * timeptr);
分解日期化为日历时间。- Windows API 获取本地时间。 毫秒单位。 格式化结构体。
SYSTEMTIME sys;
GetLocalTime( &sys ); - Windows API 计时。 微秒单位。 格式化结构体。
LARGE_INTEGER m_nFreq;
LARGE_INTEGER m_nTime;
QueryPerformanceFrequency(&m_nFreq); // 获取时钟周期
QueryPerformanceCounter(&m_nTime);//获取当前时间
printf(" time:%lld us",(m_lm.QuadPart*1000000/m_nFreq.QuadPart));
- Windows API 计时。 毫秒单位。
DWORD GetTickCount(void);
返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数。 - Windows API 获取时间。 毫秒单位。GetSystemTime()获取的格林尼治时间, 是全球标准时间.。
SYSTEMTIME stUTC;
GetSystemTime(&stUTC);
TCHAR chBuf[nBufSize];
wsprintf(chBuf,_T("UTC: %u/%u/%u %u:%u:%u:%u %d\r\n"), stUTC.wYear, stUTC.wMonth, stUTC.wDay,
stUTC.wHour, stUTC.wMinute, stUTC.wSecond,
stUTC.wMilliseconds,stUTC.wDayOfWeek);
- Windows API 获取本地时间。
GetLocalTime()
在不同的机器中会有不同的结果,这和你在控制面板中的时区设置有关. 该函数是获取的系统当前所属时区的时间, 比如说, 在北京时区, 那么获取的该时间的时间.