MFC获取系统当前时间
c语言读取时间函数
c语言读取时间函数C语言读取时间函数一、引言在现代编程语言中,时间函数是十分重要的一个功能模块。
在C语言中,我们可以使用时间函数来获取系统当前的时间,并进行一系列的时间操作。
本文将介绍C语言中常用的时间函数,包括获取当前时间、时间格式转换、时间运算等。
二、获取当前时间在C语言中,使用time.h头文件中的time函数可以获取系统当前的时间。
time函数的原型如下:time_t time(time_t *timer);其中,time_t是一个整数类型,可以存储时间值。
timer是一个指向time_t类型变量的指针,用于存储获取的时间值。
下面是一个示例代码,演示如何使用time函数获取当前时间:```c#include <stdio.h>#include <time.h>int main() {time_t currentTime;time(¤tTime);printf("当前时间:%s", ctime(¤tTime));return 0;}```运行上述代码,将会输出当前系统的日期和时间,格式如下:当前时间:Mon Sep 20 11:46:40 2021三、时间格式转换在实际开发中,我们经常需要对时间进行格式化显示或者进行其他操作。
C语言提供了一系列的时间格式转换函数,可以方便地进行时间格式的转换。
下面是一些常用的时间格式转换函数:1. 将时间转换为字符串:strftime函数strftime函数可以将时间转换为指定格式的字符串。
它的原型如下:size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr);其中,str是一个指向字符数组的指针,用于存储转换后的字符串;maxsize是str的大小;format是一个格式化字符串,用于指定转换后的时间格式;timeptr是一个指向tm结构体的指针,用于存储待转换的时间。
第三讲:MFC框架下的CTime类
第三讲:MFC框架下的CTime类很多的时候我们需要在处理数据的时候获取当前的日期和时间,这对于某一些功能,例如系统日志、销售记录等等来说是必须的,但是通常我们在C++中并不能够直接的保存这些数据。
当然,按照我们学过的思维,我们可以构造一个Date类完成这件事情,但是重新构造一个类无疑是浪费了我们的宝贵时间,毕竟项目很大代码很多,如果再为了时间和日期专门构建一个Date类又要废上很多事情了。
另外还有一件很可怕的事情,倘若你构造了Date类,那么你势必要使用Get、Set函数。
这就会造成后期用户可以随意的更改日期,这对于一些不可更改时间的事情来说是很危险的。
那么有没有一种类可以让我们轻松的解决这种问题,让我们不需要构造类型还能够准确的获取当前系统的时间避免由用户自己输入呢?【CTime类初识】CTime类专门用于表示时间和日期的概念,它是MFC常用类中的提供的强大的时间日期类。
使用它可以完成常见的有关日期和时间的操作。
CTime类表示一个绝对的时间和日期,它是MFC框架中唯一独立存在的,没有继承关系的类,因此我们并不能够将它的对象转换为CObject类型。
【使用CTime类建立对象】使用CTime类建立对象的方式有很多种,在这里我只列出最常见的几种方式:1、通过默认构造函数构造空的CTime对象:2、通过复制构造函数构造CTime对象:3、使用CTime类的有参构造函数构造对象:【CTime获取当前时间】在MFC中,若想获取当前系统的时间,我们则需要使用CTime类的静态成员函数GetCurrentTime,其含义为创建一个取值为当前时间的CTime对象。
故此我们可以这样使用它:当然你也可以把GetCurrentTime 函数换成GetTickCount,其效果相同没有什么差别。
【获取当前的日期】怎样才能够让我们获取CTime类对象中的日期呢?此时我们需要借助三个成员函数GetYear、GetMonth 以及GetSecound函数完成这件事情,当然他们的含义我相信你还是可以懂的吧!这里我就不一一介绍了,接下来我们来介绍一下他们的用法。
C语言获取当前系统时间的几种方式
C语言中如何获取时间?精度如何?1 使用time_t time( time_t * timer ) 精确到秒2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒3 计算时间差使用double difftime( time_t timer1, time_t timer0 )4 使用DWORD GetTickCount() 精确到毫秒5 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒6 要获取高精度时间,可以使用BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值然后用两次计数器的差除以Frequency就得到时间。
7 Multimedia Timer FunctionsThe following functions are used with multimedia timers.timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime//*********************************************************************//用标准C实现获取当前系统时间的函数一.time()函数time(&rawtime)函数获取当前时间距1970年1月1日的秒数,以秒计数单位,存于rawtime 中。
#include "time.h"void main (){time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );printf ( "\007The current date/time is: %s", asctime (timeinfo) );exit(0);}=================#include -- 必须的时间函数头文件time_t -- 时间类型(time.h 定义是typedef long time_t; 追根溯源,time_t是long)struct tm -- 时间结构,time.h 定义如下:int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;time ( &rawtime ); -- 获取时间,以秒计,从1970年1月一日起算,存于rawtimelocaltime ( &rawtime ); -- 转为当地时间,tm 时间结构asctime ()-- 转为标准ASCII时间格式:星期月日时:分:秒年-----------------------------------------------------------------------------二.clock()函数,用clock()函数,得到系统启动以后的毫秒级时间,然后除以CLOCKS_PER_SEC,就可以换成“秒”,标准c函数。
MFC使用datetimepicker获取时间
MFC使用datetimepicker获取时间CTime time = CTime::GetCurrentTime();int year = time.GetYear(); //返回年int mouth = time.GetMouth(); //返回月份int date = time.GetDays(); // 返回日数int hour = time.GetHours(); // 返回小时数(-23至23之间)int min = time.GetMinutes(); // 返回分钟数(-59至59之间)int sec = time.GetSeconds(); // 返回秒数(-59至59之间)以下是转载的:CTime以及其它时间差一、DateTimePicker控件引用一个DateTimePicker控件,关联变量m_date为DateTimeCtrl类型,然后在响应事件中加入如下代码:CTime tm;m_date.GetTime(tm);CString strDate=tm.Format("%Y-%m-%d");就可以获取了...但是不知为何这个还和Vc的版本问题有关,开始时候我用的版本总是出错,或者srtDate为空,或者不是用户选择的日期,后来换了一个VC版本就能得到正确的数据了...另外如果关联一个CTime类型的变量也能解决上面的问题,但是初始化的日期是1970-01-01而上面方法中初始化的日期是当前日期...所以根据用户需要的设定可以选择任何一种方法进行解决...========================实际上,只需要添加 datetimepicker控件的下面这样一个响应函数就可以解决。
void C****Dlg::OnKillfocusDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code hereUpdateData(TRUE);*pResult = 0;}========================二、CTimeSpan获取时间差要获取两个时间差,如两个CTime的时间差,可以使用MFC中的CTimeSpan类。
windows获取当前系统时间函数总结
windows获取当前系统时间函数总结windows获取当前系统时间函数总结篇一:c++获取inds时间的方法介绍我们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都会用到时间函数。
还比如我们通过记录函数或者算法开始和截至的时间,然后利用两者之差得出函数或者算法的运行时间。
编译器和操作系统为我们提供了很多时间函数,这些时间函数的精度也是各不相同的,所以,如果我们想得到准确的结果,必须使用合适的时间函数。
现在我就介绍inds下的几种常用时间函数。
1:Sleep函数使用:sleep(1000),在inds和Linux下1000代表的含义并不相同,inds 下的表示1000毫秒,也就是1秒钟;Linux下表示1000秒,Linux 下使用毫秒级别的函数可以使用usleep。
原理:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片。
当经过指定的时间间隔后,再启动线程,继续执行代码。
Sleep 函数并不能起到定时的作用,主要作用是延时。
在一些多线程中可能会看到sleep(0);其主要目的是让出时间片。
精度:sleep函数的精度非常低,当系统越忙它精度也就越低,有时候我们休眠1秒,可能3秒后才能继续执行。
它的精度取决于线程自身优先级、其他线程的优先级,以及线程的数量等因素。
2:MFC下的timer事件使用:1.调用函数SetTimer设置定时间隔,如SetTimer(0,100,NULL)即为设置100毫秒的时间间隔;2.在应用程序中增加定时响应函数nTimer,并在该函数中添加响应的处理语句,用来完成时间到时的操作。
原理:同sleep函数一样。
不同的是timer是一个定时器,可以指定回调函数,默认为nTimer函数。
精度:timer事件的精度范围在毫米级别,系统越忙其精度也就越差。
3: C语言下的Time 使用:time_t t;time( Time函数是获取当前时间。
C语言获取当前系统时间的几种方式
C语言中如何获取时间?精度如何?1 使用time_t time( time_t * timer ) 精确到秒2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒3 计算时间差使用double difftime( time_t timer1, time_t timer0 )4 使用DWORD GetTickCount() 精确到毫秒5 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒6 要获取高精度时间,可以使用BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值然后用两次计数器的差除以Frequency就得到时间。
7 Multimedia Timer FunctionsThe following functions are used with multimedia timers.timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime//*********************************************************************//用标准C实现获取当前系统时间的函数一.time()函数time(&rawtime)函数获取当前时间距1970年1月1日的秒数,以秒计数单位,存于rawtime 中。
#include "time.h"void main (){time_t rawtime;struct tm * timeinfo;time ( &rawtime );timeinfo = localtime ( &rawtime );printf ( "\007The current date/time is: %s", asctime (timeinfo) );exit(0);}=================#include -- 必须的时间函数头文件time_t -- 时间类型(time.h 定义是typedef long time_t; 追根溯源,time_t是long)struct tm -- 时间结构,time.h 定义如下:int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;time ( &rawtime ); -- 获取时间,以秒计,从1970年1月一日起算,存于rawtimelocaltime ( &rawtime ); -- 转为当地时间,tm 时间结构asctime ()-- 转为标准ASCII时间格式:星期月日时:分:秒年-----------------------------------------------------------------------------二.clock()函数,用clock()函数,得到系统启动以后的毫秒级时间,然后除以CLOCKS_PER_SEC,就可以换成“秒”,标准c函数。
MFC中添加状态栏并实时显示时间
MFC中添加状态栏并实时显示时间2009-05-21 10:011.首先在string table 里添加两个字串,ID分别为IDS_INDICATOR_MESSAGE and IDS_INDICATOR_TIME2.在你的 dlg.h 类里面加个 CStatusBar m_bar;3.在dlg.cpp 开头加上static UINT indicators[] ={IDS_INDICATOR_MESSAGE,IDS_INDICATOR_TIME};4.OnInitDialog 里面加上m_bar.Create(this); //We create the status barm_bar.SetIndicators(indicators,2); //Set the number of panesCRect rect;GetClientRect(&rect);//Size the two panesm_bar.SetPaneInfo(0,IDS_INDICATOR_MESSAGE,SBPS_NORMAL,rect.Width()-100);m_bar.SetPaneInfo(1,IDS_INDICATOR_TIME,SBPS_STRETCH ,0);//This is where we actually draw it on the screenRepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST, ID_INDICATOR_TIME);5.时间显示OnInitDialog 里面加 SetTimer(1,1000,NULL);为你的dlg类添加WM_TIMER的响应函数,在其中添加代码:CTime t1;t1=CTime::GetCurrentTime();m_bar.SetPaneText(1,t1.Format("%H:%M:%S"));CDialog::OnTimer(nIDEvent);这样添加的程序刚开始运行时在时间一栏中显示的是初始设置的字符,为了使程序在刚开始运行时就显示系统时间,可在m_bar.SetPaneInfo(1,IDS_INDICATOR_TIME,SBPS_STRETCH ,0);后添加如下代码:CTime t1;t1=CTime::GetCurrentTime();m_bar.SetPaneText(1,t1.Format("%H:%M:%S"));这样在程序刚启动时就会显示系统时间,然后实时更新。
mfc 时间转换函数
mfc 时间转换函数
MFC(Microsoft Foundation Class)是微软公司提供的用于开
发Windows应用程序的类库。
在MFC中,时间转换函数用于将时间
表示的不同格式相互转换,常用的时间转换函数包括以下几种:
1. COleDateTime类的相关函数,COleDateTime是MFC中表示
日期时间的类,它提供了一系列函数用于时间的转换,比如GetYear、GetMonth、GetDay等用于获取年、月、日,Format用于
将时间格式化成字符串,ParseDateTime用于将字符串解析成时间等。
2. CTime类的相关函数,CTime是MFC中表示时间的类,它也
提供了一些函数用于时间的转换,包括GetYear、GetMonth、
GetDay等用于获取年、月、日,Format用于将时间格式化成字符串,GetTime和SetTime用于获取和设置时间等。
3. 使用CStdioFile类中的相关函数,CStdioFile类提供了一
些用于文件操作的函数,其中包括一些用于读取和写入时间格式的
函数,可以通过这些函数将时间转换成字符串或者从字符串中解析
出时间。
总的来说,MFC提供了丰富的时间转换函数,可以满足不同场景下的时间操作需求。
开发者可以根据具体的需求选择合适的时间转换函数来完成时间的格式化、解析和转换操作。
同时,MFC还提供了一些与系统时间相关的函数,比如获取当前系统时间、设置系统时间等,这些函数也可以帮助开发者进行时间的转换操作。
在使用这些时间转换函数时,开发者需要注意参数的传递和返回值的处理,以确保时间转换操作的准确性和可靠性。
MFC中实时显示系统时间
下面给出在基于对话框的MFC应用程序的Edit控件中实时显示系统时间的方法:首先来了解一下几个主要的与定时器有关的函数。
SetTimer()函数表示定义一个定时器。
根据定义指定的窗口,在指定的窗口(CWnd)中实现OnTimer事件,这样,就可以响应事件了。
SetTimer有两个函数。
一个是全局的函数::SetTimer()UINT SetTimer( HWND hWnd, // handle of window for timer messages UINT nIDEvent, // timer identifierUINT uElapse, // time-out valueTIMERPROC lpTimerFunc // address of timer procedure);其中hWnd 是指向CWnd的指针,即处理Timer事件的窗口类。
说道窗口类(CWn d),我们有必要来看一下CWnd的继承情况:CWnd有以下子类:CFrameWnd,CDial og,CView,CControlBar等类。
这也意味这些类中都可以定义SetTimer事件。
SetTimer()的另外一种定义为:UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPOR T* lpfnTimer)(HWND, UINT, UINT, DWORD) );nIDEvent:是指设置这个定时器的iD,即身份标志,这样在OnTimer()事件中,才能根据不同的定时器,来做不同的事件响应。
这个ID是一个无符号的整型。
nElapse:是指时间延迟。
单位是毫秒。
这意味着,每隔nElapse毫秒系统调用一次Ontimer()。
void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD): Sp ecifies the address of the application-supplied TimerProc callback function t hat processes the WM_TIMER messages. If this parameter is NULL, the W M_TIMER messages are placed in the application’s message queue and han dled by the CWnd object。
MFC 获取系统时间
获取系统时间
time_t t = time(NULL);//1970年1月1日0点到现在多少秒
char *ctime(const time_t *clock);//将秒数转化为字符串
//或
CTime::GetCurrentTime(),
GetSystemTime()
int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六
如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:
CTime t1( 1999, 3, 19, 22, 15, 0 );
CTime t = CTime::GetCurrentTime();
MFC 获取系统时间
GetCurrentTime
GetCurrБайду номын сангаасntTime函数可以用来获取系统时间,用于VC编程。
使用方法
在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:
CTime t = CTime::GetCurrentTime(); //获取系统日期
CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔
int iDay=span.GetDays(); //获取这段时间间隔共有多少天
int iHour=span.GetTotalHours(); //获取总共有多少小时
int iMin=span.GetTotalMinutes();//获取总共有多少分钟
int d=t.GetDay(); //获得几号
int y=t.GetYear(); //获取年份
int m=t.GetMonth(); //获取当前月份
MFC日期显示格式
CTime必须调用赋值函数,使用其静态函数来初始化
例如:
CTime time=CTime::GetCurrentTime();
这样就可以直接调用time的内部方法得到你想要的当前的时间了。
二、使用MFC的COleDateTime来得到时间:
同上一样,使用MFC 的COleDataTime来处理当前系统的时间也需要首先使用其静态函数来初始化
例如:
COleDataTime time=COleDataTime::GetCurrentTime();
这样之后就可以直接调用time的所有方法了。
针对上面两种MFC的调用方法,MFC帮他们封装好了显示格式的函数,并且能够直接返回CString的格式。同样,也可以自己指定显示格式,具体的显示情况如下%a:显示星期英文的前面几个字母
%m:显示月份序号(01 – 12)
%M:显示分钟(00 – 59)
%p:显示当前时间是上午还是下午 A.M./P.M.
%S:显示秒钟(00 – 59)
%U:显示当前是一年中的第几周(00 – 53)
%w:显示星期的序号(0 – 6; 星期日为 0)
%W:显示当前是一年中的第几周(00 – 53)
%x:以百分号的形式显示日期 如:06/02/25/
%X:以冒号的形式显示时间 如:01:12:45
%y:两位显示年号(00 – 99)
%Y:四位显示年号
%#c:显示时间 如:Tuesday, March 14, 1995, 12:41:29
%#x:显示时间 如:Tuesday, March 14,前面几个字母
%B:显示月份的全部英文名称
mfc ctime的用法
mfc ctime的用法
MFCCTime是一种日期和时间类,用于在MFC应用程序中管理日期和时间。
它提供了许多有用的方法,例如获取当前日期和时间、格式化日期和时间字符串、比较两个日期和时间等。
使用CTime类,可以轻松地在MFC应用程序中处理日期和时间。
CTime类的构造函数有多种重载形式,可以接受不同的参数类型。
例如,可以使用当前日期和时间创建一个CTime对象,也可以使用表示日期和时间的整数值创建一个CTime对象。
还可以使用字符串表示的日期和时间创建CTime对象。
CTime类还提供了许多有用的方法,例如GetYear、GetMonth、GetDay、GetHour、GetMinute和GetSecond,可以从CTime对象中获取日期和时间的各个部分。
还可以使用Format方法将CTime对象格式化为字符串表示形式,并使用ParseDateTime方法将字符串解析为CTime对象。
CTime类还提供了一些与日期和时间比较相关的方法,例如Compare、operator<、operator>、operator==等。
这些方法可以帮助开发人员比较两个日期和时间,以确定它们的关系。
总之,MFC CTime是一种非常有用的日期和时间类,可以帮助开发人员在MFC应用程序中轻松处理日期和时间。
掌握CTime的用法可以使开发人员更加高效地编写MFC应用程序。
- 1 -。
CC++如何获取当前系统时间的实例详解
CC++如何获取当前系统时间的实例详解C/C++如何获取当前系统时间的实例详解C库中与系统时间相关的函数定义在<time.h>头⽂件中, C++定义在<ctime>头⽂件中。
⼀、time(time_t*)函数函数定义如下:time_t time (time_t* timer);获取系统当前⽇历时间 UTC 1970-01-01 00:00:00开始的unix时间戳参数:timer 存取结果的时间指针变量,类型为time_t,指针变量可以为null。
如果timer指针⾮null,则time()函数返回值变量与timer指针⼀样,都指向同⼀个内存地址;否则如果timer指针为null,则time()函数返回⼀个time_t变量时间。
返回值,如果成功,获取当前系统⽇历时间,否则返回 -1。
⼆、结构体 struct tm变量类型说明范围tm_sec int每分钟的秒数[0 - 61]tm_min int每⼩时后⾯的分钟数[0 - 59]tm_hour int凌晨开始的⼩时数[0 - 23]tm_mday int从每⽉份开始算的天数[1 - 31]tm_mon int从⼀⽉份开始的⽉份数[0 - 11]tm_year int从1900年开始的年数tm_wday int从每周天开始算的天数[0 - 6]tm_yday int⼀年的第⼏天,从零开始[0 - 365]tm_isdst int夏令时这⾥有⼏个地⽅要注意:1. tm_sec 在C89的范围是[0-61],在C99更正为[0-60]。
通常范围是[0-59],只是某些系统会出现60秒的跳跃。
2. tm_mon 是从零开始的,所以⼀⽉份为0,⼗⼆⽉份为11。
三、本地时间转换函数localtime(time_t*)函数原型struct tm * localtime (const time_t * timer);将⽇历时间转换为本地时间,从1970年起始的时间戳转换为1900年起始的时间数据结构四、源码及编译current_time.cpp#include <cstdio>#include <ctime>int main(int argc, char* argv[]) {time_t rawtime;struct tm *ptminfo;time(&rawtime);ptminfo = localtime(&rawtime);printf("current: %02d-%02d-%02d %02d:%02d:%02d\n",ptminfo->tm_year + 1900, ptminfo->tm_mon + 1, ptminfo->tm_mday,ptminfo->tm_hour, ptminfo->tm_min, ptminfo->tm_sec);return 0;}编译及运⾏$ g++ current_time.cpp$ ./a.outcurrent: 2017-07-26 23:32:46以上就是 C/C++如何获取当前系统时间的实例详解,如有疑问请留⾔或者到本站社区交流讨论,感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} SYSTEMTIME;
typedef struct _FILETIME {
DWORD dwLowDateTime; /* low 32 bits */
DWORD dwHighDateTime; /* high 32 bits */
原型:time_t GetTime( ) const;
(3)GetYear() 获取CTime对象代表的年。
原型:int GetYear( ) const;
以下(4)至(9)函数原型与GetYear()类似。
(4)GetMonth()获取CTime对象代表的月。
(5)GetDay() 获取CTime对象代表的日期。
MessageBox("今天是周日");
break;
case 2:
MessageBox("今天是周一");
break;
1.使用CTime类
CString str; //获取系统时间
CTime tm; tm=CTime::GetCurrentTime();
str=tm.Format("现在时间是%Y年%m月%d日 %X");
MessageBox(str,NULL,MB_OK);
例2:由年、月、日得到对应的周日。
CTime m_time(2001,2,5,12,0,0);
int weekday=m_time.GetDayOfWeek();
switch(weekday)
{
case 1:
//转化为CTime
CString strTime="2008-7-2 21:59:11";
COleVariant vtime(strTime);
vtime.ChangeType(VT_DATE);
COleDateTime cOleTime=vtime;
CString str=tm.Format("%Y-%m-%d");
或者
SYSTEMTIME systemTime;
::GetLocalTime(&systemTime);
CTime cTimeNow(systemTime);
// 还有一个GetSystemTime();
int h=t.GetHour(); //获取当前为几时
int mm=t.GetMinute(); //获取分钟
int s=t.GetSecond(); //获取秒
int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六
如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:
%w: 十进制表示的matID 是格式字符串资源的ID号。
4.重载运算符
operator = : 赋予新的时间。
operator + : 增加CTime和CTimeSpan对象。
operator – : 减小CTime和CTimeSpan对象。
} FILETIME, *PFILETIME, *LPFILETIME;
2.时间值的提取函数
(1)GetCurrentTime() 获取系统当前时间。
原型:static CTime PASCAL GetCurrentTime( );
(2)GetTime() 由CTime对象返回一个time_t变量。
CTime( WORD wDosDate, WORD wDosTime, int nDST = -1 );
CTime( const SYSTEMTIME& sysTime, int nDST = -1 );
CTime( const FILETIME& fileTime, int nDST = -1 );
}
运行结果在信息框中显示“今天是周一”,m_time.GetDayOfWeek()获取m_time代表的周几(1代表周日,2代表周一等等)。
MFC编程中CTime各种格式转换
(一)获得当前日期和时间,并可以转化为 CString
CTime tm=CTime::GetCurrentTime();
strTime.Format("%2d:%2d:%2d",st.wHour,st.wMinute,st.wSecond);
/////////////////////////////////////////////////////////
CTime类
1.构造和初始化CTime类对象
CTime类有下列构造函数:
说明:以不同的方式构造一个CTime对象。可以用一个已经存在的CTime对象或一个time_t(在time.h中被定义为long)类型变量来构造和初始化CTime对象,也可以用年、月、日、小时、分、秒来构造和初始化CTime对象,还可以用SYSTEMTIME、FILETIME结构来构造和初始化CTime对象。SYSTEMTIME、FILETIME结构定义如下:
2: 得到系统时间日期(使用GetLocalTime)
SYSTEMTIME st;
CString strDate,strTime;
GetLocalTime(&st);
strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay);
case 3:
MessageBox("今天是周二");
break;
case 4:
MessageBox("今天是周三");
(6)GetHour() 获取CTime对象代表的小时。
(7)GetMinute()获取CTime对象代表的分。
(8)GetSecond() 获取CTime对象代表的秒。
(9)GetDayOfWeek() 获取CTime对象代表的星期几,1代表周日、2代表周一、等等。
3.格式化时间
%m: 月的十进制表示(01-12);
%M:十进制表示的分钟(00-59);
%p: 12小时制的上下午标示(AM/PM);
%S: 十进制表示的秒(00-59);
%U: 一年中的第几个星期(00-51),星期日是一周的第一天;
%W: 一年中的第几个星期(00-51),星期一是一周的第一天;
CTime( );
CTime( const CTime& timeSrc );
CTime( time_t time );
CTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1 );
break;
case 5:
MessageBox("今天是周四");
break;
case 6:
MessageBox("今天是周五");
int iHour=span.GetTotalHours(); //获取总共有多少小时
int iMin=span.GetTotalMinutes();//获取总共有多少分钟
int iSec=span.GetTotalSeconds();//获取总共有多少秒
(二)CString转化为CTime
CString s=m_time.Format("%A,%B,%d,%Y");
CString m_strTime="当前时间是:"+s;
MessageBox(m_strTime);
运行结果在信息框中显示“当前时间是:Sunday,February,4,2001”,程序第一行获取系统当前时间,并赋给m_time。第二行从m_time创建一个字符串对象,将该字符串赋给变量s,格式%A为周的英文全名形式,%B为月的英文全名形式,%d为十进制形式的日期(01-31),%Y为 十进制表示的年。
operator < : 比较两个绝对时间,是否前一个小于后一个。
operator >= : 比较两个绝对时间,是否前一个大于等于后一个。
operator <= : 比较两个绝对时间,是否前一个小于等于后一个。
例子代码
例1:获取当前时间
CTime m_time=CTime::GetCurrentTime();
break;
case 7:
MessageBox("今天是周六");
break;
default:
break;
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:
CTime t = CTime::GetCurrentTime(); //获取系统日期
int d=t.GetDay(); //获得几号
int y=t.GetYear(); //获取年份
int m=t.GetMonth(); //获取当前月份
CTime t1( 1999, 3, 19, 22, 15, 0 );
CTime t = CTime::GetCurrentTime();
CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔