获取当前的日期、时间并格式化输出

框1,框2,框3:Static Text控件,修改ID

m_strDate:关联框1,CString数据类型(Value类别)
m_strTime:关联框2,CString数据类型(Value类别)
m_strDateTime:关联框3,CString数据类型(Value类别)

获取按钮消息响应函数:

void CTest17GetTimeDlg::OnGetTime()
{
// TODO: 在此添加控件通知处理程序代码
//UpdateData(true);
CTime m_time;
m_time=CTime::GetCurrentTime(); //获取当前时间日期
m_strDate=m_time.Format(_T("%x")); //格式化日期
m_strTime=m_time.Format(_T("%X")); //格式化时间
m_strDateTime=m_time.Format(_T("%Y-%m-%d %H:%M:%S %A")); //格式化日期时间
UpdateData(false);
}

注:
CTime类表示的是绝对时间,即基于格林威治平均时间(GMT);CTimeSpan则表示的是时间间隔。
GetCurrentTime函数可以获取当前的日期、时间;Format函数则可以将时间、日期格式化。

Format函数的格式符号及其意义:
%a: 简写的星期名,例如Sat代表Saturday
%A: 全写星期(英文),如Friday
%b: 简写的月名,例如Mar代表March
%B: 月份(全写英文),如October
%c: 月/日/年 时:分:秒,如1/3/2012 21:19:11
%d: 月中的天数,值为01~31
%H: 24小时格式的小时数,值为00~23
%I: 通常的12小时格式的小时数,值为01~12
%j: 一年当中的第几天,值为001~336
%m: 月数,值为01~12
%M: 分钟数,值为00~59
%p: 由12小时格式的时钟指示的am/pm(上午/下午)
%S: 秒数,值为00~59
%U: 年中的周数,值为00~53,以周日为一周的第一天
%w: 周中的日期数,值为0~6,其中0为周日
%W: 年中的周数,值为00~53,以周一为一周的第一天
%x: 月/日/年,%c的前半段
%X: 时/分/秒,%c的后半段
%y: 不带年代前缀的年数,值为00~99
%Y: 年份(带世纪,如2006)
%z: 简写的时区名称
%Z: 时区名称的全称,如果时区未知,此字符为空,如“中国标准时间”

==================================================================

来源:http://www.cnblogs.com/52yixin/articles/2111299.html

使用DateTimePicker控件一般是获 取其时间替代手工输入带来的不便,而DateTimePicker控件既可以获取日期(2010-03-05)也可以获取时间(16:27:33),要获 取日期只需要更改控件属性的格式为长日期或短日期,要获取时间则将格式更改为时间即可!

在添加控件变量时,选择其变量类型为CDateTimeCtrl(类如m_DateCtrl);在程序中定义CTime对象用来保存获取的时间,然后可以将其转换为CString类型;具体实现:

[cpp] view plain copy print?
  1. CTime time;
  2. m_DateCtrl.GetTime(time);
  3. CString strTime=time.Format("%Y-%m-%d")     //获取到的为日期 如:2010-03-05
  4. CTime time;
  5. m_DateCtrl.GetTime(time);
  6. CString strTime=time.Format("%H:%M:%S")     //获取到的为时间 如:16:27:33
CTime time;m_DateCtrl.GetTime(time);CString strTime=time.Format("%Y-%m-%d")     //获取到的为日期 如:2010-03-05CTime time;m_DateCtrl.GetTime(time);CString strTime=time.Format("%H:%M:%S")     //获取到的为时间 如:16:27:33

VC2005中DateTimePicker控件的使用

[cpp] view plain copy print?
  1. 1 显示年月日时分秒的当前时间
  2. CDateTimeCtrl m_DateItmeCtrl_Time;
  3. m_DateItmeCtrl_Time.SetFormat(_T("yyyy-MM-dd HH:mm:ss"));
  4. CTime TimeTemp=TimeTemp.GetCurrentTime();
  5. m_DateItmeCtrl_Time.SetTime(&TimeTemp);
  6. 其中HH表示24小时制,hh表示12小时制
  7. 2 如果声明一个控件类型为CTime的变量,那么时间将显示1970-01-01  08:00:00.
  8. 3将DateTimePicker控件声明变量类型为COleDateTime
  9. COleDateTime转CString
  10. CString strTime;
  11. COleDateTime   dtTime;
  12. strTime =dtTime.Format(_T("%Y-%m-%d %H:%M:%S"));
1 显示年月日时分秒的当前时间CDateTimeCtrl m_DateItmeCtrl_Time;m_DateItmeCtrl_Time.SetFormat(_T("yyyy-MM-dd HH:mm:ss"));CTime TimeTemp=TimeTemp.GetCurrentTime();m_DateItmeCtrl_Time.SetTime(&TimeTemp);其中HH表示24小时制,hh表示12小时制2 如果声明一个控件类型为CTime的变量,那么时间将显示1970-01-01  08:00:00.3将DateTimePicker控件声明变量类型为COleDateTimeCOleDateTime转CStringCString strTime;COleDateTime   dtTime;  strTime =dtTime.Format(_T("%Y-%m-%d %H:%M:%S"));

4 CString转COleDateTime(因为VS2005时间日期控件关联的Value变量默认是COleDateTime类型)

 

[cpp] view plain copy print?
  1. 1 CString strTime =_T("2009-08-11 11:22:33");
  2. 2 COleVariant VariantTime;
  3. 3 VariantTime = strTime;
  4. 4 VariantTime.ChangeType(VT_DATE);
  5. 5 COleDateTime DataTime = VariantTime;
1 CString strTime =_T("2009-08-11 11:22:33");
2 COleVariant VariantTime;
3 VariantTime = strTime;
4 VariantTime.ChangeType(VT_DATE);
5 COleDateTime DataTime = VariantTime;

SetTime时 参数需要为指针

[cpp] view plain copy print?
  1. m_ctrlMachineDeliveryDate.SetTime(&CTime::GetCurrentTime()); //将控件显示当前日期
  2. m_ctrlMachineInstallDate.SetTime(&CTime::GetCurrentTime());
  3. CTime tDeliveryDate;
  4. m_ctrlMachineDeliveryDate.GetTime(tDeliveryDate); //获取发货日期
  5. pMachineInfoSet->m_MACHINE_DELIVERYDATE = tDeliveryDate;
  6. CTime tDeliveryDate;
  7. tDeliveryDate = pMachineInfoSet->m_MACHINE_DELIVERYDATE; //获取记录中的日期
  8. m_ctrlMachineDeliveryDate.SetTime(&tDeliveryDate);   //将记录中的日期赋值到DateTime控件中显示
m_ctrlMachineDeliveryDate.SetTime(&CTime::GetCurrentTime()); //将控件显示当前日期m_ctrlMachineInstallDate.SetTime(&CTime::GetCurrentTime());CTime tDeliveryDate;m_ctrlMachineDeliveryDate.GetTime(tDeliveryDate); //获取发货日期pMachineInfoSet->m_MACHINE_DELIVERYDATE = tDeliveryDate; CTime tDeliveryDate;tDeliveryDate = pMachineInfoSet->m_MACHINE_DELIVERYDATE; //获取记录中的日期m_ctrlMachineDeliveryDate.SetTime(&tDeliveryDate);   //将记录中的日期赋值到DateTime控件中显示

// 设定时间日期控件允许选择的范围

[cpp] view plain copy print?
  1. CTime tCurrentTime= CTime::GetCurrentTime();
  2. CTimeSpan timespanOneMonth(30,0,0,0); //这里设置为当前日期推后30天
  3. CTime tEndTime = tCurrentTime +timespanOneMonth;
  4. m_ctrlADTipsDaysDate.SetRange(&tCurrentTime,&tEndTime);
  5. /*
  6. m_dtcTm:这个是DATE TIME PICKER控件变量
  7. CTime begin_tm(1970,1,1,8,0,0),end_tm(2038,1,19,3,14,7);
  8. m_dtcTm.SetRange(&begin_tm,&end_tm);
  9. m_tmClock=CTime::GetCurrentTime();//设置初始值为当前时间
  10. m_dtcTm.SetTime(&m_tmClock);
  11. //m_dtcTm.SetFormat("yyyy-MM-dd HH'时'mm'分'"); //设置字符串格式
  12. m_dtcTm.SetFormat("yyyy-MM-dd HH:mm:ss");
  13. */
CTime tCurrentTime= CTime::GetCurrentTime();CTimeSpan timespanOneMonth(30,0,0,0); //这里设置为当前日期推后30天CTime tEndTime = tCurrentTime +timespanOneMonth;m_ctrlADTipsDaysDate.SetRange(&tCurrentTime,&tEndTime);/*m_dtcTm:这个是DATE TIME PICKER控件变量CTime begin_tm(1970,1,1,8,0,0),end_tm(2038,1,19,3,14,7);m_dtcTm.SetRange(&begin_tm,&end_tm);m_tmClock=CTime::GetCurrentTime();//设置初始值为当前时间m_dtcTm.SetTime(&m_tmClock); //m_dtcTm.SetFormat("yyyy-MM-dd HH'时'mm'分'"); //设置字符串格式m_dtcTm.SetFormat("yyyy-MM-dd HH:mm:ss");*/

===================================CString 与 CTime 的相互转化=============================================

C++中,CTime 与 CString转换<转>

C++中,CTime 与  CString转换
CTime m_StartTime1 = CTime::GetCurrentTime();
CString csStartTime = m_StartTime1.Format( "%Y%m%d%H%M%S" );

使用sprintf及sscanf函数进行CString与CTime之间的转换

一.将CString转为CTime的几种方法

CString   timestr   =   "2000年04月05日";  
  int   a,b,c   ;  
  sscanf(timestr.GetBuffer(timestr.GetLength()),"%d年%d月%d日",&a,&b,&c);  
  CTime   time(a,b,c,0,0,0);

--------or - ---------------------

CString   s("2001-8-29   19:06:23");  
  int   nYear,   nMonth,   nDate,   nHour,   nMin,   nSec;  
  sscanf(s,   "%d-%d-%d   %d:%d:%d",   &nYear,   &nMonth,   &nDate,   &nHour,   &nMin,   &nSec);  
  CTime   t(nYear,   nMonth,   nDate,   nHour,   nMin,   nSec);

---- or ------------------------
CString   timestr   =   "2000年04月05日";  
  int   year,month,day;  
  BYTE   tt[5];  
  //get   year  
  memset(tt,   0,   sizeof(tt));  
  tt[0]   =   timestr[0];  
  tt[1]   =   timestr[1];  
  tt[2]   =   timestr[2];  
  tt[3]   =   timestr[3];  
  year=   atoi((char   *)tt);  
   
  //get   month  
  memset(tt,   0,   sizeof(tt));  
  tt[0]   =   timestr[6];  
  tt[1]   =   timestr[7];  
  month   =   atoi((char   *)tt);  
   
  //get   day  
  memset(tt,   0,   sizeof(tt));  
  tt[0]   =   timestr[10];  
  tt[1]   =   timestr[11];  
   
  CTime   time(year,month,day,0,0,0);

从上面来看,很明显使用sscanf()函数的优势.

二.将CTIme转换为CString的方法:

CTime  tmSCan = CTime::GetCurrentTime();

CString szTime = tmScan.Format("'%Y-%m-%d %H:%M:%S'");

这样得到的日期时间字符串就是以"2006-11-27 23:30:59"的格式.这是不是很方便呢?

//取得CTime中的日期
CString cstrDate = tmScan.Format("%Y-%m-%d");

//取得CTime中的时间
CString cstrTime = tmScan.Format("%H:%M-%S");

sprintf还有个不错的表妹:strftime,专门用于格式化时间字符串的,用法跟她表哥很像,也是一大堆格式控制符,只是毕竟小姑娘家心细,她还要调用者指定缓冲区的最大长度,可能是为了在出现问题时可以推卸责任吧。这里举个例子:

更多更好的sprintf()函数说明参考:《spirntf,你知道多少?》

http://blog.csdn.net/steedhorse/archive/2005/03/25/330206.aspx

time_t t = time(0);

//产生"YYYY-MM-DD hh:mm:ss"格式的字符串。

char s[32];

strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", localtime(&t));

sprintf在MFC中也能找到他的知音:CString::Format,strftime在MFC中自然也有她的同道:CTime::Format,这一对由于从面向对象哪里得到了赞助,用以写出的代码更觉优雅

VC控件DateTimePicker使用方法及其相关相关推荐

  1. 编写ActiveX控件及其打包方法

    1.ActiveX控件概述 ActiveX控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中.在Windows操作系统以OCX结尾的文件,OCX代表"对象链接 ...

  2. 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...

  3. Win32页上的所有控件属性与方法

    Win32页上的所有控件.该页控件是在32位Win系统中的一些基本控件,如果你选择开发CLX程序,则在控件面板上不会显示该页 TTabControl 属性 DisplayRect:只定该控件客户区的一 ...

  4. listview控件在php的使用方法,Android_Android编程之控件ListView使用方法,本文实例讲述了Android编程之控 - phpStudy...

    Android编程之控件ListView使用方法 本文实例讲述了Android编程之控件ListView使用方法.分享给大家供大家参考.具体分析如下: 控件ListView是一个重要的控件,可以被用作 ...

  5. C#中Windows Media Player控件使用实例|方法

    Windows Media Player控件Windows Media Player是一种媒体播放器,可以播放当前最流行的音频.视频文件和大多数混合型的多媒体文件.为了便于程序的开发,Visual S ...

  6. 【语言-c#】C#控件DateTimePicker 修改日历字体大小、颜色

    一.类似提问 c#控件 DateTimePicker如何把下拉日历变大 ,我试过设置CalendarFont,但是无效 在win7下用CalendarFont设置dateTimepicker任何字体效 ...

  7. PPT中WMP播放器控件的使用方法

    Windows Media Player是个十分好用的播放器,它支持多个格式视频.音频文件的播放,在PPT 2003中使用的频率非常的高. 本文以PPT 2003为例,讲解一下PPT 2003中WMP ...

  8. 使用()控件的saveas方法可以将上传文件保存到服务器.,NET开发-FileUpload上传控件HasFile、FileName、SaveAs()的使用...

    .NET开发-FileUpload控件 1. FileUpload控件概述 在ASP.NET WebForm的标准控件中,可以使用FileUpload控件实现客户端文件(任意类型的文件)的上传,上传后 ...

  9. VC控件MSComm编写串口通信程序

    转载:http://blog.csdn.net/liangzhao_jay/article/details/45647229 在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月 ...

最新文章

  1. JAVA的instanceOf什么时候用
  2. c++ lambda函数_C++ Lambda表达式
  3. [基础|理论|实验]linux下的文件读写
  4. 缓存穿透、缓存击穿、缓存雪崩及其解决方案
  5. iOS程序启动过程笔记
  6. ieee文章作者对不齐怎么办呢?
  7. 关于文件描述符的问题的解决
  8. SpringBoot2.1.5(23)---SpringBoot 开发WEB应用
  9. mysql json类型存储list_list存储json字符串
  10. Router_Cloud
  11. codeforces 414C C. Mashmokh and Reverse Operation(归并排序求逆序对)
  12. 【C语言】VSCode配置C语言开发环境(详细图文)
  13. document 常用事件
  14. VS找到w3wp.exe 附加到23wp.exe进行debug程序调试
  15. Ubuntu RTL8821ce网卡驱动
  16. js打怪升级之路三 点出满天小星星
  17. Mathmatica9 注册不了
  18. Microsoft Office 2016 VOL版下载
  19. 针对学校出现猪流感而做的一个简单的小软件(更新版)
  20. C# vs Java —— 剑客vs刀客 Java vs .NET之飘逸的Java

热门文章

  1. php输出一百个hello,如何使用 PHP 输出 hello world?
  2. oracle简写sql,Oracle通过sqlplus编辑sql命令
  3. fstab自动挂载_玩客云刷机系统之armbian挂载U盘增加空间
  4. 2020-05-16 为什么PID中的P或者说状态反馈中的K不能无限增大
  5. jq添加新节点赋予class属性并获取该对象
  6. CSS3特效之转化(transform)和过渡(transition)
  7. 【django之权限组件】
  8. AJAX ASP/PHP 请求实例
  9. SuperSocket 1.5 Documentation译文 ------- 目录索引
  10. 关于spring mybateis 定义resultType=java.util.HashMap