Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7775336
  • 博文数量: 701
  • 博客积分: 2150
  • 博客等级: 上尉
  • 技术积分: 13233
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-29 16:28
个人简介

天行健,君子以自强不息!

文章分类

全部博文(701)

文章存档

2019年(2)

2018年(12)

2017年(76)

2016年(120)

2015年(178)

2014年(129)

2013年(123)

2012年(61)

分类: C/C++

2015-12-17 17:00:36

一、传统的获取系统时间的方法
传统的C++获取时间的方法需要分平台来定义。相信百度代码也不少。

我自己写了下,如下。
const std::string getCurrentSystemTime()
{
  
  if (PLATFORM_ANDROID || PLATFORM_IOS)
  {
    struct timeval s_now;
    struct tm* p_tm;
    gettimeofday(&s_now,NULL);
    p_tm = localtime((const time_t*)&s_now.tv_sec);
    char date[60] = {0};
    sprintf(date, "%d-%02d-%02d      %02d:%02d:%02d",
      (int)p_tm->tm_year + 1900,(int)p_tm->tm_mon + 1,(int)p_tm->tm_mday,
      (int)p_tm->tm_hour,(int)p_tm->tm_min,(int)p_tm->tm_sec);
    return std::string(date);
  }
  if (PLATFORM_W32)
  {
    struct tm* p_tm;
    time_t timep;
    time(&timep);
    p_tm = localtime(&timep);
    char date[60] = {0};
    sprintf(date, "%d-%02d-%02d      %02d:%02d:%02d",
      (int)p_tm->tm_year + 1900,(int)p_tm->tm_mon + 1,(int)p_tm->tm_mday,
      (int)p_tm->tm_hour,(int)p_tm->tm_min,(int)p_tm->tm_sec);
    log("%s",date);
    return std::string(date);
  }
  return "";
}


二、C++11 std标准库跨平台方法
显然,我们注意到不同平台下的代码相似度很高,那么能不能利用C++11里面的新特性,使得二者合并呢?
答案是肯定的。
很简单的,代码如下:
const std::string getCurrentSystemTime()
{
  auto tt = std::chrono::system_clock::to_time_t
  (std::chrono::system_clock::now());
  struct tm* ptm = localtime(&tt);
  char date[60] = {0};
  sprintf(date, "%d-%02d-%02d      %02d:%02d:%02d",
    (int)ptm->tm_year + 1900,(int)ptm->tm_mon + 1,(int)ptm->tm_mday,
    (int)ptm->tm_hour,(int)ptm->tm_min,(int)ptm->tm_sec);
  return std::string(date);
}
又短又简单有木有。


本文原创,如需转载,请说明出处:
http://blog.csdn.net/q229827701/article/details/41015483
阅读(2298) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~