CTime、time_t、COleDateTime、unsigned long、CString互转

1.unsigned long->CTime
  unsigned long nTime;   //nTime类型为unsigned long
  CTime objTime(nTime);   //CTime类型变量直接获取时间值
  string strTime;    //格式化string变量
  strTime.Format("d-d-d d:d:d", objTime.GetYear(), objTime.GetMonth(), objTime.GetDay(),
  objTime.GetHour(), objTime.GetMinute(), objTime.GetSecond());
  printf("%s\n", strTime);


2.CTime -> unsigned long
  CTime objTime;     //定义CTime类型变量
  m_DateTimeCtrlTime.GetTime(objTime);  //在MFC界面获取时间值(Date Time Picker)

  unsigned long nTime = objTime.GetTime(); //unsigned long类型变量获取时间长度

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

    CString strDate;
    COleDateTime ole_time;
    CTime c_time;
3.COleDateTime->CTime
  SYSTEMTIME sys_time;
  ole_time.GetAsSystemtime(sys_time);
  c_time = CTime(sys_time);
4.CTime->COleDateTime
  SYSTEMTIME sys_time;
  c_time.GetAsSystemTime(sys_time);
  ole_time = COleDateTime(sys_time);
5.CString->COleDateTime
  strDate = "2009-4-25 12:30:29";
  ole_time.ParseDateTime(strDate);
6.COleDateTime->CString
  strDate = ole_time.Format("%Y-%m-%d %H:%M:%S");
7.CTime->CString

  strDate = c_time.Format("%Y-%m-%d %H:%M:%S");

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

8.unsigned long->time_t
  unsigned long nTime;   //nTime初始类型为unsigned long
  ...     //nTime赋值
  time_t tTime = (time_t)nTime;  //将nTime(32位)强制转换为time_t类型,或者INT64类型(64位)
  struct tm *tmTime;   //定义tm类型指针
  tmTime = localtime(&tTime);  //获取时间
  printf("%s\n", asctime(tmTime));  //将时间表示为英文语句形式,如:Mon Dec 28 12:33:50 1998

9. time_t -> unsigned long
  CString strTime;   //CString类型
  ...     //在MFC界面获取时间值
  struct tm stTime;   //定义tm类型变量
  sscanf((LPSTR)(LPCTSTR)strTime, "d-d-d d:d:d",
   &stTime.tm_year, &stTime.tm_mon, &stTime.tm_mday, &stTime.tm_hour,
  &stTime.tm_min, &stTime.tm_sec); //强制转换为char*,再使tm变量获取时间值
  stTime.tm_year = stTime.tm_year - 1900;
  stTime.tm_mon = stTime.tm_mon - 1; //转换相对1900.01的时间长度
  unsigned long nTime = (long)_mkgmtime(&stTime);  //转换成了unsigned long类型


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
time_t是C/C++语言标准库中的时间类型,表示从格林威治时间1970年1月1日00:00:00到当前时间的秒数。CTime、SYSTEMTIME、COleDateTime、COleVariant是MFC中的时间类型,用于便捷地进行日期和时间的操作。 下面是它们之间的互相换代码及讲解: 1. time_t to CTime ```cpp time_t t = time(NULL); CTime time(t); ``` 这段代码将当前时间time_t类型换为CTime类型。CTime类型的构造函数可以接受time_t类型的参数,将其换为CTime类型。 2. CTime to time_t ```cpp CTime time(2021, 10, 1, 0, 0, 0); time_t t = time.GetTime(); ``` 这段代码将指定时间的CTime类型换为time_t类型。CTime类型的GetTime函数返回从格林威治时间1970年1月1日00:00:00到当前时间的秒数,即time_t类型。 3. SYSTEMTIME to CTime ```cpp SYSTEMTIME st; GetLocalTime(&st); CTime time(st); ``` 这段代码将当前时间的SYSTEMTIME类型换为CTime类型。CTime类型的构造函数可以接受SYSTEMTIME类型的参数,将其换为CTime类型。 4. CTime to SYSTEMTIME ```cpp CTime time(2021, 10, 1, 0, 0, 0); SYSTEMTIME st; time.GetAsSystemTime(st); ``` 这段代码将指定时间的CTime类型换为SYSTEMTIME类型。CTime类型的GetAsSystemTime函数将CTime类型换为SYSTEMTIME类型。 5. COleDateTime to CTime ```cpp COleDateTime dt; dt = COleDateTime::GetCurrentTime(); CTime time(dt.GetYear(), dt.GetMonth(), dt.GetDay(), dt.GetHour(), dt.GetMinute(), dt.GetSecond()); ``` 这段代码将当前时间的COleDateTime类型换为CTime类型。COleDateTime类型的GetCurrentTime函数返回当前时间的COleDateTime类型,CTime类型的构造函数可以接受COleDateTime类型的参数,将其换为CTime类型。 6. CTime to COleDateTime ```cpp CTime time(2021, 10, 1, 0, 0, 0); COleDateTime dt(time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond()); ``` 这段代码将指定时间的CTime类型换为COleDateTime类型。COleDateTime类型的构造函数可以接受CTime类型的参数,将其换为COleDateTime类型。 7. COleVariant to CTime ```cpp COleVariant var; var = COleDateTime::GetCurrentTime(); CTime time(var.date); ``` 这段代码将当前时间的COleVariant类型换为CTime类型。COleVariant类型的构造函数可以接受COleDateTime类型的参数,将其换为COleVariant类型,CTime类型的构造函数可以接受DATE类型的参数,将其换为CTime类型。 8. CTime to COleVariant ```cpp CTime time(2021, 10, 1, 0, 0, 0); COleVariant var(time); ``` 这段代码将指定时间的CTime类型换为COleVariant类型。COleVariant类型的构造函数可以接受CTime类型的参数,将其换为COleVariant类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值