C++11新特性,利用std::chrono精简传统获取系统时间的方法
2014-11-11 19:10
288 查看
一、传统的获取系统时间的方法
传统的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
相关文章推荐
- C++11新特性,利用std::chrono精简传统获取系统时间的方法
- C++11新特性,利用std::chrono精简传统获取系统时间的方法
- C++11新特性,利用auto和std::chrono获取系统时间的方法
- C++11新特性,std::chrono获取系统时间
- windows获取网络时间,同步系统时间方法
- 用VC++获取系统时间几种方法
- c#获取系统时间的方法
- 获取系统时间几种方法 和 使用CPU时间戳进行高精度计时收藏
- 最简单实现获取当前系统时间的方法
- Qt configure 参数不完全说明 以及 精简系统 减少编译时间的一些方法
- linux c 获取系统时间的方法
- sql server 获取系统时间的方法
- 获取系统时间几种方法 和 使用CPU时间戳进行高精度计时
- c#获取系统时间的方法
- MFC获取系统当前时间的方法
- c#获取系统时间的方法
- 使用DateDiff方法来获取系统时间与指定时间的间隔数
- [zt]利用.NET修改设置系统时间的两中方法
- 获取系统时间的方法
- C获取系统时间的方法(linux下)