C++11新特性,利用std::chrono精简传统获取系统时间的方法
来源:互联网 发布:网络摄像机软件 编辑:程序博客网 时间:2024/06/10 21:48
一、传统的获取系统时间的方法
传统的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++获取时间的方法需要分平台来定义。相信百度代码也不少。
我自己写了下,如下。
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
0 0
- C++11新特性,利用std::chrono精简传统获取系统时间的方法
- C++11新特性,利用std::chrono精简传统获取系统时间的方法
- C++11新特性,利用auto和std::chrono获取系统时间的方法
- C++11 新的计时方法——std::chrono 大法好
- C++11 新的计时方法——std::chrono 大法好
- C++11 新的计时方法——std::chrono 大法好
- std::chrono时间处理类
- linux c 获取系统时间的方法
- C语言获取系统时间的方法
- C++11的时间库 chrono
- 【C/C++】C++11新特性:std::bind
- [C/C++11]_[初级]_[实用时间库chrono]
- C++11 std::chrono库详解
- C++11 std::chrono库详解
- C++11 std::chrono库详解
- c++11 Chrono时间库
- C获取系统时间的方法(linux下)
- C语言中获取系统时间的方法
- 如何 解包 ,编辑 ,重新打包boot images
- CSocketClient.cpp
- 分布式哈希表DHT和一致性哈希
- 浅复制&深复制
- jquery实现简单的图片查看器
- C++11新特性,利用std::chrono精简传统获取系统时间的方法
- 什么是scipy、numpy、matplotlib?
- Android NDK开发Crash错误定位
- Linux安装jdk
- python发邮件
- ubuntu 安装截图工具 Shutter,并设置快捷键 Ctrl+Alt+A
- SpringMVC中的分页查询
- CentOS6.6下配置KMS自动激活服务器
- 努力到感动自己,拼搏到无能为力