CTime time;
time = CTime::GetCurrentTime ();
CString strTime = timeFormat ("%m月%d日%H:%M");
include afxh
===============================
CTime没有基类。
一个CTime对象代表一个绝对的时间和日期。CTime类引入了ANSI time_t数据类型以及其相关的运行时函数,其中包括向或自一个Gregorian日期和24-小时时间的转换功能。
CTime值是基于世界标准时间(UCT)的,UCT时间等于格林威治(Greenwich)时间(GMT)。本地时区是由TZ环境变量控制的。
当创建一个CTime时,将nDST参数设置为0表示有效的是标准时间,或将其设置为大于0表示有效的白天保留时间,将其设置为小于零的值表示由C运行时库代码来计算有效的是标准时间还是白天保留时间。如果没有设置这个参数,则它的值是不明确的,而从mktime返回的值是不可预知的。如果timeptr指向一个由先前调用asctime,gmtime,或localtime返回的tm结构,则tm_isdst域包含了适当的值。
参见“Microsoft Visual C++ 60参考库”的“Microsoft Visual C++ 60运行时参考库”卷可以获得有关time_t数据类型和CTime使用的运行时函数的更多信息。与CTime类对应的类是CTimeSpan类,它代表了一段时间间隔——两个CTime对象之间的差值。
CTime和CTimeSpan类都是不可派生的。因为没有虚函数,CTime和CTimeSpan对象的大小都正好是四个字节。多数成员函数都是内联函数。
CTime time = CTime::GetCurrentTime() ;
GetCurrentTime() 是CTime 的静态成员函数返回一个 CTime 类型的对象,CTime再转化为CString。
这样就行了
SYSTEMTIME systm;
GetSystemTime(&systm);
参数结构体
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, PSYSTEMTIME;
不用再多解释了吧?挺容易看明白的
CTime timer;
timer=CTime::GetCurrentTime();
CString str;
int h = timerGetHour();
int m = timerGetMinute();
int s = timerGetSecond();
strFormat("%d:%d:%d",h,m,s);
UpdateData(true);
m_Timer = str;
UpdateData(false);
对关注性能的程序开发人员而言,一个好的计时部件既是益友,也是良师。计时器既可以作为程序组件帮助程序员精确的控制程序进程,又是一件有力的调试武器,在有经验的程序员手里可以尽快的确定程序的性能瓶颈,或者对不同的算法作出有说服力的性能比较。 在Windows平台下,常用的计时器有两种,一种是timeGetTime多媒体计时器,它可以提供毫秒级的计时。但这个精度对很多应用场合而言还是太粗糙了。另一种是QueryPerformanceCount计数器,随系统的不同可以提供微秒级的计数。对于实时图形处理、多媒体数据流处理、或者实时系统构造的程序员,善用QueryPerformanceCount/QueryPerformanceFrequency是一项基本功。 本文要介绍的,是另一种直接利用Pentium CPU内部时间戳进行计时的高精度计时手段。以下讨论主要得益于《Windows图形编程》一书,第 15页-17页,有兴趣的读者可以直接参考该书。关于RDTSC指令的详细讨论,可以参考Intel产品手册。本文仅仅作抛砖之用。 在 Intel Pentium以上级别的CPU中,有一个称为“时间戳(Time Stamp)”的部件,它以64位无符号整型数的格式,记录了自CPU上电以来所经过的时钟周期数。由于目前的CPU主频都非常高,因此这个部件可以达到纳秒级的计时精度。这个精确性是上述两种方法所无法比拟的。 在Pentium以上的CPU中,提供了一条机器指令RDTSC(Read Time Stamp Counter)来读取这个时间戳的数字,并将其保存在EDX:EAX寄存器对中。由于EDX:EAX寄存器对恰好是Win32平台下C++语言保存函数返回值的寄存器,所以我们可以把这条指令看成是一个普通的函数调用。像这样: inline unsigned __int64 GetCycleCount() { __asm RDTSC } 但是不行,因为RDTSC不被C++的内嵌汇编器直接支持,所以我们要用_emit伪指令直接嵌入该指令的机器码形式0X0F、0X31,如下: inline unsigned __int64 GetCycleCount() { __asm _emit 0x0F __asm _emit 0x31 } 以后在需要计数器的场合,可以像使用普通的Win32 API一样,调用两次GetCycleCount函数,比较两个返回值的差,像这样: unsigned long t; t = (unsigned long)GetCycleCount(); //Do Something time-intensive t -= (unsigned long)GetCycleCount(); 《Windows图形编程》第15页编写了一个类,把这个计数器封装起来。有兴趣的读者可以去参考那个类的代码。作者为了更精确的定时,做了一点小小的改进,把执行RDTSC指令的时间,通过连续两次调用GetCycleCount函数计算出来并保存了起来,以后每次计时结束后,都从实际得到的计数中减掉这一小段时间,以得到更准确的计时数字。但我个人觉得这一点点改进意义不大。在我的机器上实测,这条指令大概花掉了几十到100多个周期,在 Celeron 800MHz的机器上,这不过是十分之一微秒的时间。对大多数应用来说,这点时间完全可以忽略不计;而对那些确实要精确到纳秒数量级的应用来说,这个补偿也过于粗糙了。 这个方法的优点是: 1高精度。可以直接达到纳秒级的计时精度(在1GHz的CPU上每个时钟周期就是一纳秒),这是其他计时方法所难以企及的。 2 成本低。timeGetTime
#include <timeh>
// 方法一
time_t tt = time(NULL);//这句返回的只是一个时间cuo
tm t= localtime(&tt);
printf("%d-%02d-%02d %02d:%02d:%02d\n",
t->tm_year + 1900,
t->tm_mon + 1,
t->tm_mday,
t->tm_hour,
t->tm_min,
t->tm_sec);
// 方法二
SYSTEMTIME st = {0};
GetLocalTime(&st);
printf("%d-%02d-%02d %02d:%02d:%02d\n",
stwYear,
stwMonth,
stwDay,
stwHour,
stwMinute,
stwSecond);
用
VOID
GetSystemTime
(
LPSYSTEMTIME
lpSystemTime
//
address
of
system
time
structure
);
函数就可以获得了,其中LPSYSTEMTIME
是个
结构体
含:年,月,日,
周几
,小时,分,秒,毫秒。
以上就是关于在VC6.0环境下如何获得当前时间与日期,该包含哪个文件,具体调用 哪个函数全部的内容,包括:在VC6.0环境下如何获得当前时间与日期,该包含哪个文件,具体调用 哪个函数、VC怎么获取当前日期时间并存储到字符串中、怎么用Vc++获取时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)