永发信息网

vc ++中获取系统小时时间

答案:1  悬赏:40  手机版
解决时间 2021-05-08 05:46
在VC++中分别获取系统当前小时,分钟,秒的程序代码。谢谢各位高手帮忙
最佳答案


1 使用time_t time( time_t * timer ) 精确到秒


  计算时间差使用double difftime( time_t timer1, time_t timer0 )


2 使用clock_t clock() 得到的是CPU时间 精确到1/CLOCKS_PER_SEC秒


3 使用DWORD GetTickCount() 得到的是系统运行的时间 精确到毫秒


4 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒


5 要获取高精度时间,可以使用


BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率


BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值


然后用两次计数器的差除以Frequency就得到时间。



GetTickCount()和GetCurrentTime()都只精确到55ms(1个tick就是55ms)。如果要精确到毫秒,应该使用timeGetTime函数或QueryPerformanceCounter函数。具体例子可以参考QA001022 "VC++中使用高精度定时器"、QA001813 "如何在Windows实现准确的定时"和QA004842 "timeGetTime函数延时不准"。


Q:vc++怎样获取系统时间,返回值是什么类型的变量呢?


GetSystemTime返回的是格林威志标准时间


GetLocalTime,和上面用法一样,返回的是你所在地区的时间,中国返回的是北京时间


VOID GetSystemTime(


LPSYSTEMTIME lpSystemTime // address of system time structure


);


函数就可以获得了,其中LPSYSTEMTIME 是个结构体


含:年,月,日,周几,小时,分,秒,毫秒。


以下是Time的MSDN文档:


Compatibility in the Introduction.


Libraries



Return Value


time returns the time in elapsed seconds. There is no error return.


Parameter


timer


Storage location for time


Remarks


The time function returns the number of seconds elapsed since midnight (00:00:00), January 1, 1970, coordinated universal time, according to the system clock. The return value is stored in the location given by timer. This parameter may be NULL, in which case the return value is not stored.


Example



#include <time.h>


#include <stdio.h>


#include <sys/types.h>


#include <sys/timeb.h>


#include <string.h>


void main()


{


char tmpbuf[128], ampm[] = "AM";


time_t ltime;


struct _timeb tstruct;


struct tm *today, *gmt, xmas = { 0, 0, 12, 25, 11, 93 };



_tzset();



_strtime( tmpbuf );


printf( "OS time:\t\t\t\t%s\n", tmpbuf );


_strdate( tmpbuf );


printf( "OS date:\t\t\t\t%s\n", tmpbuf );



time( &ltime );


printf( "Time in seconds since UTC 1/1/70:\t%ld\n", ltime );


printf( "UNIX time and date:\t\t\t%s", ctime( &ltime ) );



gmt = gmtime( &ltime );


printf( "Coordinated universal time:\t\t%s", asctime( gmt ) );



today = localtime( &ltime );


if( today->tm_hour > 12 )


{


strcpy( ampm, "PM" );


today->tm_hour -= 12;


}


if( today->tm_hour == 0 )


today->tm_hour = 12;



printf( "12-hour time:\t\t\t\t%.8s %s\n",


asctime( today ) + 11, ampm );



_ftime( &tstruct );


printf( "Plus milliseconds:\t\t\t%u\n", tstruct.millitm );


printf( "Zone difference in seconds from UTC:\t%u\n",


tstruct.timezone );


printf( "Time zone name:\t\t\t\t%s\n", _tzname[0] );


printf( "Daylight savings:\t\t\t%s\n",


tstruct.dstflag ? "YES" : "NO" );



if( mktime( &xmas ) != (time_t)-1 )


printf( "Christmas\t\t\t\t%s\n", asctime( &xmas ) );



today = localtime( &ltime );



strftime( tmpbuf, 128,


"Today is %A, day %d of %B in the year %Y.\n", today );


printf( tmpbuf );


}



Output


OS time: 21:51:03


OS date: 05/03/94


Time in seconds since UTC 1/1/70: 768027063


UNIX time and date: Tue May 03 21:51:03 1994


Coordinated universal time: Wed May 04 04:51:03 1994


12-hour time: 09:51:03 PM


Plus milliseconds: 279


Zone difference in seconds from UTC: 480


Time zone name:


Daylight savings: YES


Christmas Sat Dec 25 12:00:00 1993


Today is Tuesday, day 03 of May in the year 1994.

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
后天男友过生日:送什么礼物?玫瑰花可以吗
初一人民教育版生物投稿啊(上册)
用10元网域一卡通换天书奇谈10两金(1元=1两
为什么我炫舞5星级评价的黄名变成蓝名了??
炫舞找老公、回答快的优先
丙丁年是哪一年
爱惜时间的格言警句,关于时间的名言警句。要
依照血型分析性格有科學根據嗎?
诺基亚支持手机QQ2009版?
纯正汽配中心地址在哪,我要去那里办事
四川泸州给一个115的毛坯房简装(准备出租)
黑涩会美眉的晴天娃娃的曲子和哪个歌的一样
谁能帮做张图
为什么我QQ号不能充值QQ币
面粉微波炉可以做什么,微波炉怎么做出又快又
推荐资讯
装了个驱动后电脑变的很卡
骑马与砍杀乱舞水浒MOD下载地址
诛仙2里九黎这个人物有没有前途?
我的空间为什么不能设置访问权限?
有什么好听的歌曲???
鑫源内衣袜业地址有知道的么?有点事想过去
四川地区天语S980换个内屏多少钱?
扶贫后的感言句子,形容扶贫的句子
8年的狗相当于人类的多少岁还可以活几年
黄委会基本建设工程质量检测中心在哪里啊,我
卡水软件好还是道具免疫好
十一买电脑是否会便宜?能否分析写下宏基4741
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?